Aprendendo Bitwise (Operadores bit a bit ) de uma vez por todas

Published: 2019-08-04, Updated: 2017-11-07

Os operadores de comparação:

Os operadores basicamente são esses:

|	OR
&	AND
^	XOR
~	NOT

Os operadores bit a bit fazem a mesma coisa que os seus correspondentes na programação normal a única diferença que você tem que entender é que eles operam bit a bit e não o número que você passa, exemplo:

7 | 8 = 15

Não faz sentido nenhum né? Mas é o que te falei, ele compara bit a bit e não o número que você está vendo, na verdade ele comparou:

0111 | 1000 = 1111

Comparando bit a bit dessa forma:

0 | 1 = 1
1 | 0 = 1
1 | 0 = 1
1 | 0 = 1

Deu pra perceber? Pra fazer sentido você precisa converter para binário e ver cada bit pra ver como ele comparou.

& (AND)

Ele é a mesma coisa que o &&, só retorna true se todos os comparados forem true, só que ele compara os bits do número que você passa e não o número. Basicamente ele compara os bits do integer e retorna se as comparações foram true ou false

Exemplo

4 & 6 = 4

Por que? Veja a representação deles em binário:

4 -> 100  (em binário)
6 -> 110

Então ele compara bit a bit (nao importa se comparar o 4 ou o 6 antes, a ordem dos fatores nao altera o resultado)

1 AND 1 = 1
1 AND 0 = 0
0 AND 0 = 0

Repare que o binário gerado na comparação foi 100(em binário) que coincidentemente é 4(em inteiro)

Outro exemplo:

6 & 9 = 0

Por que? Veja a representação deles em binário:

6 ->  110
9 -> 1001

Então comparando bit a bit, Onde tem espaço em branco colocamos 0:

0 AND 1 = 0
1 AND 0 = 0
1 AND 0 = 0
0 AND 1 = 0

O binário gerado foi 0000 e esse número em decimal naturalmente é 0

Espero que tenha entendido

^ (XOR)

Ele faz a mesma coisa que o XOR na programação normal, só retorna true se apenas um dos bits comparados forem true.

Tabela verdade

A B Resultado
1 0 1
0 0 0
1 1 0

Referências


C/C++ Bookmarks Spring and Queue

Comments