Galera, alguem saberia me explicar como funciona os operadores & e | usados com inteiros?
exemplo:
x = 6 | 3;
y = 2 & 5;
eles não funcionam somente com booleanos?
Galera, alguem saberia me explicar como funciona os operadores & e | usados com inteiros?
exemplo:
x = 6 | 3;
y = 2 & 5;
eles não funcionam somente com booleanos?
Use a representação em binário do número e utilize 1 como se fosse true e 0 como false, assim
1 & 1 = 1
1 & 0 = 0
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0
1 ^ 1 = 0
0 ^ 0 = 0
1 ^ 0 = 1
Assim:
6 | 3 = 7
0000 0000 0000 0000 0000 0000 0000 0110
0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------
0000 0000 0000 0000 0000 0000 0000 0111
2 & 5 = 0
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0101
---------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000
E eles não funcionam só com booleanos, os operadores short-circuit && e || é que servem apenas para booleanos.
eu nao entendi 2 & 5 = 0 . …
vc pode me explicar …
ok, 2 (int) em binário:
0000 0000 0000 0000 0000 0000 0000 0010
5 (int) em binário:
0000 0000 0000 0000 0000 0000 0000 0101
A representação binária de um número decimal é feita assim:
da direita para a esquerda, cada número 0 ou 1 deve ser multiplicado por potências de 2 desta forma:
Ex.: com os bits da direita do número 5:
0 1 0 1
0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 5
com o operador & comparamos bit a bit dos dois operandos e seguimos a regra:
1 & 1 = 1 (o memos que verdadeiro E verdadeiro = verdadeiro)
falso para todos os outros casos
Colocando 2 em cima do 5:
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0101
vemos que não há nenhuma coluna onde os bits dos dois números são 1, portanto o operador & vai retornar 0 para todas as colunas.
Valeu mesmo !
Uma vez eu tinha aprendido isso kuando fazia uma aulinha de eletrônica
no colegial ! (Há uns 9 anos ).
Não ia lembrar isso mesmo …
:o
blza, cara, agora ficou clareza…
Valeu…
