logo

Operatory bitowe w C++

W C++ dostępnych jest różnych operatorów. Każdy Operator ma określony symbol i operację do wykonania. W C++ mamy różne kategorie operatorów.

  1. Operatory arytmetyczne
  2. Operatorzy relacyjni
  3. Operatory logiczne
  4. Operatory przypisania
  5. Operatory bitowe

W tym artykule dowiemy się o operatorach bitowych w C++.



Operatory bitowe C++

Operatory bitowe to operatory używane do wykonywania operacji na poziomie bitu na liczbach całkowitych. Podczas wykonywania tej operacji liczby całkowite traktowane są jako ciągi cyfr binarnych. W C++ mamy różne typy operatorów bitowych.

  1. Bitowe ORAZ (&)
  2. Bitowe LUB (|)
  3. Bitowy XOR (^)
  4. Bitowe NIE (~)
  5. Lewy Shift (<<)
  6. Prawy Shift (>>)

1. Bitowe ORAZ (&)

Bitowa operacja AND jest wykonywana pomiędzy dwiema liczbami całkowitymi. Porównuje każdy bit na tej samej pozycji, a bit wyniku zostanie ustawiony (1) tylko i tylko wtedy, gdy oba odpowiednie bity są ustawione (1). Symbolem używanym do wykonywania operacji bitowych AND jest &.

Przykład : wykonamy operację bitową pomiędzy dwiema liczbami 7 i 4. W systemie binarnym 7 będzie reprezentowane jako 111, a 4 będzie reprezentowane jako 100.

 1 1 1 & 1 0 0  ------  1 0 0>

jak widać w powyższym przykładzie, tylko te bity są bitami ustawionymi, których odpowiednie bity (oba) są ustawione. Dlatego 7 i 4 = 4

r w programowaniu c

2. Bitowy LUB (|)

Jeśli operacja bitowa OR zostanie wykonana pomiędzy dwiema liczbami całkowitymi, porówna każdy bit na tej samej pozycji i bit wyniku zostanie ustawiony (1), jeśli ustawiony zostanie którykolwiek z odpowiednich bitów (1). Symbolem używanym do wykonywania operacji bitowych OR jest |.

Przykład: wykonamy bitową operację LUB pomiędzy dwiema liczbami 7 i 4. w systemie binarnym 7 będzie reprezentowane jako 111, a 4 będzie reprezentowane jako 100.

 1 1 1 | 1 0 0  ------  1 1 1>

jak widać w powyższym przykładzie, te bity są bitami ustawionymi, dla których ustawiony jest co najmniej jeden odpowiedni bit. Zatem 7|4=7.

3. Bitowy XOR (^)

Jeśli bitowa operacja XOR zostanie wykonana pomiędzy dwiema liczbami całkowitymi, porówna każdy bit na tej samej pozycji, a bit wyniku zostanie ustawiony (1), jeśli którykolwiek z odpowiednich bitów się różni, tj. jeden z nich powinien wynosić 1, a drugi powinien wynosić zero. Symbolem używanym do wykonywania bitowych operacji XOR jest ^.

Przykład: wykonamy bitową operację XOR pomiędzy dwiema liczbami 7 i 4. w systemie binarnym 7 będzie reprezentowane jako 111, a 4 będzie reprezentowane jako 100.

 1 1 1 ^ 1 0 0  ------  0 1 1>

jak widać w powyższym przykładzie, te bity są bitami ustawionymi, których odpowiadające im bity są różne. Zatem 7^4=3.

algorytmy sortowania sortowanie przez scalanie

4.Bitowo NIE (~)

Operacja Bitowe NIE jest wykonywana na pojedynczej liczbie. Zmienia bieżący bit na jego uzupełnienie, tzn. jeśli bieżący bit ma wartość 0, to w rezultacie będzie to 1, a jeśli bieżący bit ma wartość 1, to stanie się 0. Jest to oznaczone symbolem ~.

Przykład: Wykonamy bitową operację NOT na liczbie 4. Liczba 4 jest reprezentowana jako 100 w systemie binarnym.

~ 1 0 0  ------  0 1 1>

Jak widać w rezultacie, bity, których wartość początkowa wynosiła 1, dają w wyniku 0 i odwrotnie. Dlatego bitowe NOT liczby 4 będzie wynosić 3.

jak duży jest ekran mojego monitora

5. Lewy Shift (<<)

Operator ten przesuwa bity liczby całkowitej na lewą stronę o określoną liczbę (jak wspomniano). Ta operacja przesunięcia w lewo jest równoważna pomnożeniu liczby całkowitej przez liczbę przesuniętych pozycji o potęgę 2. Symbol używany do reprezentowania operatora przesunięcia w lewo to <<.

Przykład: Załóżmy, że mamy liczbę całkowitą 5 i przesuniemy jej bity w lewo o 2 pozycje. Operacja będzie reprezentowana jako x << 2.

Liczba 5 jest reprezentowana w systemie binarnym jako 101. Dodamy kilka zer na początku, aby przesunąć bity w lewo. Dlatego będzie to reprezentowane jako 00000101. Teraz przesuniemy wszystkie bity o dwie pozycje w lewo i wypełnimy puste pozycje wartością 0. Dlatego stanie się 00010100, czyli 20. Jak wspomniano wcześniej, przesunięcie liczby w lewo o dwa bity oznacza pomnożenie jej przez 2 podniesione do 2, czyli 4. 5*4 = 20 pokazuje powyższe stwierdzenie.

6. Prawy Shift (>>)

Operator ten przesuwa bity liczby całkowitej na prawą stronę o określoną liczbę (jak wspomniano). Ta operacja przesunięcia w prawo jest równoważna podzieleniu liczby całkowitej przez liczbę przesuniętych pozycji o potęgę 2. Symbol używany do reprezentowania operatora lewego przesunięcia to>>.

stół lateksowy

Przykład: Załóżmy, że mamy liczbę całkowitą 16 i przesuniemy jej bity w prawo o 2 pozycje. Operacja będzie reprezentowana jako x>> 2.

Liczba 16 jest reprezentowana w systemie binarnym jako 10000. Dodamy kilka zer na początku, aby przesunąć bity w prawo. Dlatego będzie to reprezentowane jako 00010000. Teraz przesuniemy wszystkie bity o dwie pozycje w prawo i wypełnimy puste pozycje wartością 0. Dlatego stanie się 00000100, czyli 4. Jak wspomniano wcześniej, przesunięcie liczby w prawo o dwa bity oznacza podzielenie jej przez 2 podniesione do 2, czyli 4. 16*4 = 4 pokazuje powyższe stwierdzenie.

Operatory bitowe programu C++

Poniżej realizacja tematu:

C++
// C++ Program to demonstrate // Bitwise Operator #include  using namespace std; // Main function int main()  b;  // Bitwise XOR  int bitwise_xor = a ^ b;  // Bitwise NOT  int bitwise_not = ~a;  // Bitwise Left Shift  int left_shift = a << 2;  // Bitwise Right Shift  int right_shift = a>> 1;  // Drukowanie wyników // Operatory bitowe cout<< 'AND: ' << bitwise_and << endl;  cout << 'OR: ' << bitwise_or << endl;  cout << 'XOR: ' << bitwise_xor << endl;  cout << 'NOT a: ' << bitwise_not << endl;  cout << 'Left Shift: ' << left_shift << endl;  cout << 'Right Shift: ' << right_shift << endl;  return 0;>

Wyjście:

AND: 1 OR: 7 XOR: 6 NOT a: -6 Left Shift: 20 Right Shift: 2>

Wniosek

Podsumowując, operatory bitowe służą do wykonywania operacji na poziomie binarnym (bitowym). W C++ mamy różne rodzaje operatorów bitowych, takie jak AND, OR, XOR, NOT, przesunięcie w lewo i przesunięcie w prawo. Dzięki tym operacjom można bardzo precyzyjnie manipulować pojedynczymi bitami, co jest niezbędne w przetwarzaniu danych na niskim poziomie.