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 |