Operacje pokojowe. Programowanie w C i C ++

Operacje pokojowe to operacje służące do wykonywania manipulacji na szablonach bitowych lub liczbach binarnych, które obejmują pracę z poszczególnymi bitami. Jest to szybka, prosta operacja obsługiwana bezpośrednio przez procesor, używana do kontrolowania wartości do porównań i obliczeń.

Podstawa obliczeń

Binarny system cyfrowy wykorzystuje tylko dwie cyfry - 0 i 1. Komputery działają w formacie binarnym, co oznacza, że ​​przechowują dane i wykonują obliczenia przy użyciu tylko zer i jednostek.



Chociaż jedna liczba binarna może służyć do reprezentowania logiki True

(true) lub False

(lie), można użyć kilku plików binarnych liczby W rzeczywistości dowolna liczba może być reprezentowana w formacie binarnym.

Aplikacja

Operatory szybkości transmisji danych używane są w następujących obszarach:
  • Stosy komunikacyjne, w których poszczególne bity w nagłówku są dołączone do danych, niosą ważne informacje.
  • Wbudowane oprogramowanie do kontrolowania różnych funkcji w układzie i wskazywania stanu sprzętu poprzez kontrolowanie poszczególnych bitów rejestrów sprzętowych wbudowanych mikrokontrolerów.
  • Programowanie niskiego poziomu dla aplikacji takich jak sterowniki urządzeń, oprogramowanie kryptograficzne, oprogramowanie do dekodowania wideo, podzielniki pamięci, oprogramowanie kompresujące i grafika.
  • Wygodneprzeprowadzanie dużych zbiorów liczb całkowitych w zadaniach wyszukiwania i optymalizacji.
  • Operacje przestawne wykonywane z flagami bitowymi, które mogą obejmować instancję typu transferu do przechowywania dowolnej kombinacji wartości zdefiniowanych na liście modułów wyliczających.
  • Operacje pokojowe - jak to działa?

    W przeciwieństwie do zwykłych operatorów logicznych (na przykład +, -, *), które działają z bajtami lub grupami bajtów, operatory bitowe mogą sprawdzać lub instalować każdy z poszczególnych bitów w bajtach. Operacje beatów nigdy nie powodują przeludnienia w komórkach pamięci, ponieważ wynik uzyskany po operacji znajduje się w zakresie możliwych wartości dla typu liczbowego.


    Operatory beat stosowane w rodzinie języków C (C #, C i C ++):
  • OR (|) - wynik jest prawdziwy, jeśli jeden z argumentów jest prawdziwy.
  • AND (& amp;) - wynik jest prawdziwy tylko wtedy, gdy oba argumenty są prawdziwe. Można go użyć do skonfigurowania maski do sprawdzania poprawności wartości niektórych bitów.
  • XOR (^) - wynik jest prawdziwy tylko wtedy, gdy jeden z jego argumentów jest prawdziwy. Służy głównie do przełączania niektórych bitów. Pomaga również zastąpić dwie zmienne bez użycia trzeciej.
  • NOT (~) to dodanie bitowe lub inwersja. Dostarcza bitowy załącznik do argumentu, odwracając jego wartość, tak że wszystkie zera są konwertowane na jeden, a wszystkie jednostki są konwertowane na zero.
  • (Prawy Shift) i (Lewy Shift) - operator, który przesuwa bity w liczbie pozycji podanej przez drugąoperand w prawym lub lewym kierunku. Operatory przesunięcia są używane do wyrównywania bitów.
  • Przykład pracy

    Operatory bitowe to symbole reprezentujące akcje, które należy wykonać dla poszczególnych bitów. Operacja bitowa działa na dwu-bitowych wzorach o tej samej długości, ustawiając ich poszczególne bity: operacja logiczna AND (i) dla każdej pary bitów prowadzi do 1 (prawda), jeśli pierwszy i drugi bit to 1. W przeciwnym razie wynikiem jest zero. Spośród innych aplikacji ORAZ można użyć do sprawdzenia poszczególnych bitów w bitmapie, aby sprawdzić, czy są one fałszywe czy prawdziwe. Przyjrzyjmy się bliżej przykładowi: IsOdd = (ValueToTest & 1)! = 0. Operacja logiczna OR (|) dla każdej pary bitów prowadzi do 1, jeśli pierwszy lub drugi bit ma wartość 1. W przeciwnym razie wynikiem jest zero. Operacja logiczna XOR (~) dla każdej pary bitów prowadzi do 1, jeśli dwa bity są różne i 0, jeśli są one takie same. Operator logiczny NIE reprezentowany jako ^. Lewe przesunięcie (), prawe przesunięcie i prawe przesunięcie punktu zerowego (>) są czasami określane jako operatory bitowe i są nazywane operacjami przesunięcia bitowego.

    Priorytetyzacja

    Kolejność priorytetów (od najwyższego do najniższego) operatorów dwójkowych w programowaniu w C:
  • NIE;
  • Lewy Shift z Prawym Shiftem);
  • ORAZ;
  • XOR;
  • OR.
  • Te operandy są używane w większości języków programowania. Na przykład podczas pisania kodu javascript operacje bitowe są takie same jak te wymienione powyżej. Wynika to z podstawowych podstaw matematycznychkod programu jest oparty. W szczególności operacje bitowe w Javie są z kolei całkowicie identyczne z javascript.

    Beatowanie i programowanie w języku C i innych językach

    Bit to najmniejsza jednostka miary używana do kwantyfikowania danych komputerowych. Zawiera jedną wartość binarną 0 lub 1.
    Chociaż jeden bit może określić wartość logiczną True

    lub False

    , rzadko jest używany jako osobna jednostka. Dlatego w pamięci komputera bity są często grupowane w 8-bitowe klastry, które są nazywane bajtami. Ponieważ bajt zawiera osiem bitów, z których każdy ma dwie możliwe wartości, jeden binarny w języku C (język programowania) może mieć 28 lub 256 różnych wartości.

    Terminy "bity" i "bajty" są często mylone, a nawet używane jako wymienne, ponieważ brzmią tak samo i obie są redukowane literą "B". Jednakże, jeśli poprawnie napisane, bity są zredukowane do małych liter "b", a bajty są zredukowane do wielkich liter - "B". Ważne jest, aby nie mylić tych dwóch terminów, ponieważ każdy pomiar w bajtach zawiera ośmiokrotność liczby bitów. Na przykład mały plik tekstowy o rozmiarze 4 KB zawiera 4000 bajtów lub 32000 bitów.
    Zwykle pliki, urządzenia pamięci i pojemność pamięci są mierzone w bajtach, a szybkości transmisji danych są mierzone w bitach. Na przykład karta pamięci SSD może mieć pojemność 240 GB, a bagażnik może być przenoszony z szybkością 10 Mb /s. Ponadto bity są również używane do opisu architektury procesora, takiej jak 32-bitowy lub 64-bitowy procesor.

    Operacje pokojowe w Pascal

    Nieformalny poziom operacji w paskalu obejmuje pracę z pojedynczymi bitami, które są najmniejszymi fragmentami danych na komputerze. Chociaż komputery są w stanie manipulować bitami, zwykle przechowują dane i wykonują instrukcje w bitowych wielu wartościach, które są nazywane bajtami. Większość języków programowania, w tym operacje bitowe w Delphi, zarządzają grupami 816 lub 32-bitowymi.

    Opis procesu

    Operator bitowy jest symbolem reprezentującym działanie, które działa na danych na poziomie bitów, a nie na bajtach lub dużych jednostkach danych, co jest najczęściej napotykane.
    Większość konwencjonalnych operatorów pracuje z jednym lub większą liczbą bajtów, które w większości systemów zawierają osiem bitów. Ponieważ zapewniają większą dokładność i wymagają mniej zasobów, operatorzy systemów strumieniowych mogą sprawić, że kod będzie szybszy i bardziej wydajny. Przykłady operacji bitowych obejmują:
  • szyfrowanie;
  • kompresja;
  • harmonogram;
  • połączenie z portami /gniazdami;
  • programowanie systemów wbudowanych;
  • skończone maszyny stanów.
  • Operator ręczny pracuje z binarną reprezentacją liczby, a nie z jej wartością. Operand jest traktowany jako zbiór bitów, a nie jako jedna liczba. Operatory przepływności są podobne w większości obsługiwanych języków - C, Java, javascript, Python i Visual Basic.

    Dlaczego ważne jest, aby z niego korzystać?

    Operacje szczytowe są absolutnie niezbędne przy programowaniu rejestrów sprzętowych w systemach wbudowanych. Każdy procesor ma jeden lub więcej rejestrów (zwykle określony adres pamięci), które kontrolują, czy są włączone czyPrzerwanie lub wyłączone. Aby umożliwić przerywania normalnego procesu uruchamiania, trzeba mieć pozwolenie na kawałki tego rodzaju przerwy, a co najważniejsze, nie należy zmieniać żadnego z pozostałych bitów w rejestrze.
    Kiedy przerwanie jest wyzwalany, to zwykle ustawia bit w rejestrze stanu, tak że procedura jedna usługa może ustalić dokładną przyczynę przerwania. Testowanie poszczególnych bitów szybko rozszyfrować źródło przerwań.
    W wielu systemów wbudowanych całkowitej dostępnej pamięci RAM może być 256 lub 64,128 bajtów. W tym środowisku zazwyczaj wykorzystuje jeden bajt do przechowywania danych i wiele elementów logicznych flagi i operacje bitowe wykorzystywane do ustawienia i je przeczytać.

    Powiązane publikacje