Java - Operadores bit a bit

Operador E bit a bit

Estes operadores são chamados de bit a bit, porque os operando são comparados no nível dos seus bits.

Símbolo & é chamado de E bit a bit.

<operando1> & <operando2>

Para este operador não importa se algum dos operando tem o valor false, ele vai verificar todos os operandos que houver na expressão.

Exemplo:

Neste caso será impresso o valor false, e o operador & ira comparar o valor de todas variáveis.

C:\>javac OperadorBitBitE.java
C:\>java OperadorBitBit
false

Se usarmos valores inteiros, ele irá comparar cada bit, exemplo:

Neste caso será impresso o valor 6, porque o operador & vai comparar cada bit na base binária e depois a mesma é convertida para a base decimal.

C:\>javac OperadorBitBitE2.java
C:\>java OperadorBitBit
6

Lembrando que um inteiro tem 16 bits, então:

Variável a tem o valor 30.

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0

Variável b tem o valor 7.

0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

Resultado tem o valor 6.

0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

Tabela verdade:

Operando1 Operando2 Resultado
1 1 1
1 0 0
0 1 0
0 0 0

Operador OU bit a bit

Símbolo | é chamado de OU bit a bit.

<operando1> | <operando2>

Para este operador não importa se algum dos operando tem o valor true, ele vai verificar todos os operando que tiver na expressão.

Exemplo:

Neste caso o valor impresso será true, e o operador ira comparar o valor de todas variáveis.
C:\>javac OperadorBitBitOU.java
C:\>java OperadorBitBitOU
true

Se usarmos valores inteiros, ele irá comparar cada bit, exemplo:

Neste caso será impresso o valor 31, porque o operador | vai comparar cada bit na base binária e depois a mesma é convertida para a base decimal.

C:\>javac OperadorBitBitOU2.java
C:\>java OperadorBitBitOU2
true

Lembrando que um inteiro tem 16 bits, então:

Variável a tem o valor 30.

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0

Variável b tem o valor 7.

0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

Resultado tem o valor 31.

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1

Tabela verdade:

Operando1 Operando2 Resultado
1 1 1
1 0 1
0 1 1
0 0 0

Operador OU EXCLUSIVO bit a bit

Símbolo ^ é chamado de OU EXCLUSIVO bit a bit.

<operando1> ^ <operando2>

Se usarmos valores inteiros, por exemplo ele ira comparar cada bit, exemplo:

Neste caso será impresso o valor 25, porque o operador ^ vai comparar cada bit na base binária e depois a mesma é convertida para a base decimal.

C:\>javac OperadorBitBitOUExclusivo.java
C:\>java OperadorBitBitOUExclusivo
25

Lembrando que um inteiro tem 16 bits, então:

Variável a tem o valor 30.

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0

Variável b tem o valor 7.

0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

Resultado tem o valor 25.

0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1

Tabela verdade:

Operando1 Operando2 Resultado
1 1 0
1 0 1
0 1 1
0 0 0