Python fornece os seguintes operadores bitwise, que realizam conjunção lógica, disjunção lógica, disjunção exclusiva, inversão bitwise, deslocamento de bit esquerdo, e deslocamento de bit direito em cada bit de um valor int do tipo inteiro binário, respectivamente.
&|^~<<>>
Nesta secção, começamos por explicar o seguinte.
- intersecção (AND) : 
& - disjunção (OR) : 
| - EXCLUSIVA-OU operação (XOR) : 
^ 
A seguir, discutiremos o seguinte.
- Operações bitwise sobre números inteiros negativos
 - bit flip ( NOT) : 
~ - deslocamento de bits : 
<<,>> 
Para mais informações sobre como escrever números inteiros em binário, octal, e hexadecimal, e como converter números e cordas binários, octal, e hexadecimais usando as seguintes funções, ver o artigo seguinte.
bin()oct()hex()format()
- Artigos relacionados:Converter números e cordas binárias, octais e hexadecimais uns dos outros em Python
 
Também, para operações lógicas (operações booleanas) sobre valores booleanos (verdadeiros, falsos) em vez de operações bitwise, consultar o artigo seguinte. Usar e,ou em vez de &,|.
- Artigos relacionados:Os operadores lógicos de Python e, ou, e não (conjunção lógica, disjunção, negação)
 
intersecção (AND) : &operador
Este é um exemplo de uma lógica AND usando o & operador, com o resultado convertido numa string em notação binária por bin().
x = 9 # 0b1001 y = 10 # 0b1010 print(x & y) print(bin(x & y)) # 8 # 0b1000
disjunção (OR) : |operador
Um exemplo de um produto lógico (OR) utilizando o | operador, com o resultado convertido numa string em notação binária por bin() e saída em conjunto.
print(x | y) print(bin(x | y)) # 11 # 0b1011
EXCLUSIVA-OU operação (XOR) : ^operador
Exemplo de um produto lógico (XOR) usando o operador ^, combinado com o resultado da conversão para uma string em notação binária usando bin().
print(x ^ y) print(bin(x ^ y)) # 3 # 0b11
A relação entre a entrada e a saída para cada bit de lógica AND, OR, e XOR é mostrada na tabela abaixo.
| Entrada 1 | Entrada 2 | intersecção (AND) | disjunção (OR) | EXCLUSIVA-OU operação (XOR) | 
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 | 
| 1 | 0 | 0 | 1 | 1 | 
| 0 | 1 | 0 | 1 | 1 | 
| 0 | 0 | 0 | 0 | 0 | 
Operações bitwise sobre números inteiros negativos
Quando uma operação bitwise é realizada sobre um inteiro negativo, o valor é processado como se fosse expresso na forma de um complemento de dois.
Note, contudo, que se converter um número inteiro negativo para uma cadeia binária usando bin() ou formato(), o valor absoluto terá um sinal de menos em vez de um formato complementar de dois.
Se quiser obter um fio com a representação de dois complementos, tome AND com o número máximo de dígitos de bits necessários, como se mostra abaixo.
- Para 4 bits
0b1111(=0xf) - Para 8 bits
0xff - Para 16-bit
0xffff 
É possível obter uma representação de dois complementos (cada bit é invertido e 1 é adicionado).
x = -9 print(x) print(bin(x)) # -9 # -0b1001 print(bin(x & 0xff)) print(format(x & 0xffff, 'x')) # 0b11110111 # fff7
- Artigos relacionados:Converter números e cordas binárias, octais e hexadecimais uns dos outros em Python
 
bit flip : ~operador
~exemplo de folheamento de bits com os operadores.
A inversão bit a bit não é simplesmente o valor de cada bit invertido. O valor de retorno ao utilizar este operador é o seguinte.~x=-(x+1)
-(x+1)Este valor é equivalente a considerar o valor de entrada x como uma forma de complemento de dois e invertendo todos os bits.
Como mencionado acima, em Python, quando um inteiro negativo é convertido numa cadeia binária usando bin(), formato(), etc., não está na forma de complemento de dois, mas em valor absoluto com um sinal de menos. Portanto, a conversão de ~x directamente para uma cadeia de caracteres não resultará numa cadeia com os bits do valor original invertidos.
x = 9 # 0b1001 print(~x) print(bin(~x)) # -10 # -0b1010
Quando realizamos a operação AND e a transformamos numa cadeia de representação do complemento de dois, podemos ver que os bits do valor original estão invertidos.
Além disso, por exemplo, para obter uma cadeia de bits que é uma cadeia de bits de 4 dígitos invertidos como está (bit de sinal omitido), use o formato() para preencher os zeros para o valor ANDed da seguinte forma'04b'
print(bin(~x & 0xff)) print(format(~x & 0b1111, '04b')) # 0b11110110 # 0110
deslocamento de bits : << , >>
Exemplos de deslocamento de bits para a esquerda e para a direita utilizando operadores de deslocamento de bits.
x = 9 # 0b1001 print(x << 1) print(bin(x << 1)) # 18 # 0b10010 print(x >> 1) print(bin(x >> 1)) # 4 # 0b100
Para valores negativos, o bit de sinal é prolongado e deslocado, e o sinal negativo positivo permanece o mesmo. Um valor negativo é uma imagem de uma linha de 1s até à esquerda.
x = -9 print(bin(x)) print(bin(x & 0xff)) # -0b1001 # 0b11110111 print(x << 1) print(bin(x << 1)) print(bin((x << 1) & 0xff)) # -18 # -0b10010 # 0b11101110 print(x >> 1) print(bin(x >> 1)) print(bin((x >> 1) & 0xff)) # -5 # -0b101 # 0b11111011
É melhor pensar em termos de cadeias de duas expressões complementares, uma vez que pensar em termos de números não é claro.