Operatory bitowe w Pythonie

Operatory bitowe w Pythonie są używane do porównywania wartości liczbowych wyrażonych w systemie binarnym. Dokładniej porównywane są binarne ciągi cyfr, bit po bicie lub prościej cyfra po cyfrze.

Przykłady liczb dziesiętnych 2 i 5 zapisanych w systemie binarnym:

x = 0000 0101 (liczba 5)

y = 0000 0010 (liczba 2)

Poniższa tabelka przedstawia operatory bitowe:

Operator Znaczenie Działanie Opis wyniku
&AND (bitowa koniunkcja) Ma wartość 1, jeśli obie wartości są 1Koniunkcja bitowa daje w wyniku liczbę, która ma bity równe jeden, tylko na tych pozycjach, na których oba argumenty miały bity równe jeden
|OR (bitowa alternatywa) Ma wartość 1, jeśli jedna lub dwie wartości są 1Alternatywa bitowa daje w wyniku liczbę, która ma bity równe jeden, na wszystkich tych pozycjach, na których jeden z argumentów miał bit równy jeden
^XOR (bitowa alternatywa rozłączna)Ma wartość 1, jeśli tylko jedna z dwóch wartości jest 1Alternatywa rozłączna daje w wyniku liczbę, która ma bity równe jeden, tylko na tych pozycjach, na których tylko jeden z argumentów miał bit równy jeden
~NOT (bitowa negacja) Odwraca wszystkie bityNegacja bitowa daje w wyniku liczbę, która ma bity równe jeden, tylko na tych pozycjach, na których argument miał bity równe zero
>> Przesunięcie w prawo Przesunięcie o „n” bitów w prawoPrzesunięcie bitowe w lewo daje w wyniku liczbę, która na najmłodszej pozycji ma dopisaną wartość zero, natomiast najstarszy bit jest tracony
<< Przesunięcie w lewo Przesunięcie o „n” bitów w lewoPrzesunięcie bitowe w prawo daje w wyniku liczbę, która na najstarszej pozycji ma dopisaną wartość zero, natomiast najmłodszy bit jest tracony

Poniższa tabelka przedstawia działania operatorów bitowych:

Nazwa operacjiWartość x = 5Wartość y = 2Działaniena operacjiWynik w systemie binarnymWynik w systemie dziesiętnym
AND0000 01010000 0010x & y0000 00000
OR0000 0101 0000 0010 x | y0000 01117
XOR0000 01010000 0010x ^ y0000 01117
NOT0000 0101~ x1111 1010250
Przesunięcie w prawo0000 0101 x >> 10000 0010
[0000 00101]
2
Przesunięcie w lewo0000 0101x << 10000 1010
[00000 1010]
10