Operadores bit-a-bit
Operador | Descrição |
& | O resultado é 1 somente se os dois bits sendo comparados são 1 (operação AND) |
| | O resultado é 1 se pelo menos um dos bits sendo comparados é 1 (operação OR) |
^ | O resultado é 1 se os bits sendo comparados possuem valores diferentes (operação XOR) |
~ | Inverte os valores dos bits (operação NOT) |
<< | Deslocamento dos bits para a esquerda |
>> | Deslocamento dos bits para a direita |
Vejamos um exemplo que usa os operadores bit a bit.
x = 5 y = 14 print('x & y =', x & y) print('x | y =', x | y) print('~x =', ~x, ', ~y =', ~y) print('x<<2 =', x<<2, ', y<<2 =', y<<2) print('x>>2 =', x>>2, ', y>>2 =', y>>2)
O resultado do programa é mostrado abaixo.
x & y = 4 x | y = 15 ~x = -6 , ~y = -15 x<<2 = 20 , y<<2 = 56 x>>2 = 1 , y>>2 = 3
Para entender o funcionamento dos operadores bit-a-bit é preciso primeiro converter os valores para a base binária. Vamos considerar operações com 8 bits (é possível definir 256 diferentes números). Então 5_{10} = 00000101_2 e 14_{10} = 00001110_2.
- x \; \& \; y = 00000101_2 \; \& \; 00001110_2 = 00000100_2 = 4_{10}
- x \; | \; y = 00000101_2 \; | \; 00001110_2 = 00001111_2 = 15_{10}
- \sim x = 11111010_2 = (250-256)_{10} = -6_{10}
- \sim y = 11110001_2 = (241-256)_{10} = -15_{10}
- x << 2 = 00010100_2 = 20_{10}
- y<< 2 = 00111000_2 = 56_{10}
- x >> 2 = 00000001_2 = 1_{10}
- y >> 2 = 00000011_2 = 3_{10}