Operadores Lógicos

2 respostas
D

Olá pessoal, estou aprendendo java e estou com algumas dúvidas nos operadores lógicos. Entendi que eles geram true e false etc. Outrossim, ao estudar uma expressão, não entendi a explicação matemática ao usar eles.

Explico, na apostila que estou estudando eles trazem uma expressão matemática: 1 | 2 ^ 3 * 2 & 13 | 2.

Na explicação eles vão falando do que é executado primeiro e explicando os resultados.

1 - A análise é feita da esquerda para a direita; (Ok)
2 - O primeiro cálculo a ser executado é 3 * 2, que resulta em 6; (Ok)
3 - Em seguida, o resultado anterior é comparado com 13, uma operação & (E): 6 & 13, que resulta em 4; (como chegou em 4???)

4 - Agora é feita uma operação ^ (Ou exclusivo) com 2 (mais a esquerda) e o 4 da operação anterior. O resultado é 6; (novamente não entendi a lógica, é adição?)
5 - É executada, então, a operação | (Ou) mais a esquerda: 1 | 6 que resulta em 7; (hamm??)
6 - Por último, é executada a operação | (Ou): 7 | 2 que também resulta em 7; (considera a primeira expressão? qual a lógica?)

A mesma expressão acima poderia ser escrita da seguinte forma: ((1 | (2 ^ ((3 * 2) & 13))) | 2)

2 Respostas

rmendes08

Quando utilizados com números inteiros os operadores lógicos operam como operadores bit a bit. Para entender você tem que converter os inteiros para binário, executar a operação e converter novamente para inteiro, veja:

0110  = 6
  1101  = 13   &
------------------
  0100 =  4

Veja o caso do ou exclusivo:

0010 = 2
0100 = 4     ^
-------------------
0110 = 6
D

Excelente explicação. Entendi a lógica.
Muito obrigado!!

Criado 8 de julho de 2016
Ultima resposta 9 de jul. de 2016
Respostas 2
Participantes 2