1. &
Operador bit a bit
Dissemos anteriormente que todos os dados são armazenados na memória em uma representação binária. Há muito tempo, os programadores criaram muitas maneiras interessantes de trabalhar com números binários. Por exemplo, Java possui operadores lógicos que operam nos bits da representação binária de um número: &
(AND), | (OR)
, ~
(NOT ou complemento) e ^
(XOR - exclusivo ou).
a & b
Este operador é muito semelhante ao &
operador lógico (AND), só que é denotado por um único e comercial, não dois:
E é aplicado a bits individuais. Cada operando é tratado como um array de bits, e o i
th bit do resultado é calculado usando o i
th bit de cada um dos dois operandos.
O primeiro bit do resultado será calculado com base no primeiro bit do número a
e no primeiro bit do número b
, o segundo bit - com base no segundo bit do número a
e no segundo bit do número b
, etc.
O &
operador (AND) significa "o bit resultante é igual a um somente se o bit correspondente do número a
for igual a um, AND
o bit correspondente do número b
for igual a um":
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
Exemplos:
Exemplo | Resultado |
---|---|
|
|
|
|
|
|
|
|
2. |
Operador bit a bit
Este operador é muito semelhante ao |
operador lógico (OR), só que é denotado por uma única linha vertical, não duas:
a | b
E é aplicado a bits individuais. Cada operando é tratado como um array de bits, e o i-ésimo bit do resultado é calculado usando o i-ésimo bit de cada um dos dois operandos.
O |
operador bit a bit (OR) significa "o bit resultante é igual a um se o bit correspondente do número a
for igual a um, OR
o bit correspondente do número b
é igual a um":
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
Exemplos:
Exemplo | Resultado |
---|---|
|
|
|
|
|
|
|
|
Somente quando os bits correspondentes (os bits na mesma posição) de ambos os números são zero é que o bit correspondente do resultado é igual a zero.
3. ^
Operador bit a bit (XOR ou "exclusivo ou")
O XOR
operador, também pronunciado exclusivo ou , é denotado pelo ^
símbolo. Para inseri-lo no teclado, pressione shift + 6 (em um layout de teclado em inglês).
a ^ b
Este operador é um pouco semelhante ao OR
operador, inclusive por ter um nome semelhante:XOR
O ^
operador bit a bit (XOR) significa "o bit resultante é igual a um se o bit correspondente do número a
for igual a um, OR
o bit correspondente do número b
é igual a um, mas não ambos ao mesmo tempo":
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
Exemplos:
Exemplo | Resultado |
---|---|
|
|
|
|
|
|
|
|
Somente quando os bits correspondentes (os bits na mesma posição) de ambos os números são diferentes , o bit correspondente do resultado é igual a um . Se os bits forem iguais , o bit resultante será igual a zero .
4. ~
Operador bit a bit (NOT, COMPLEMENT)
Acho que você já pode adivinhar o que ele faz. Este operador é muito semelhante ao !
operador lógico (NOT), mas é indicado por um til , não por um ponto de exclamação:
~a
Este é um operador unário , o que significa que se aplica a um único número, não a dois. Ele aparece antes deste único operando.
O ~
operador bit a bit significa "o bit resultante é um se o bit correspondente do número a
for zero e é zero se o bit correspondente do número a
for um":
~1 = 0
~0 = 1
Exemplos:
Exemplo | Resultado |
---|---|
|
|
|
|
|
|
|
|
Este operador simplesmente muda o bit que está 1
para 0
e os bits que estão 0
para 1
.