Help me

2 respostas
peresjuliao

Olá, Pessoal

O que realmente isso faz?
int a = 20;
int b = 5;
int c = a ^ b;
    
System.out.println(c);

2 Respostas

R

Bom dia peresjuliao,

Então esse é o operdador lógico OR Exclusivo, veja o exemplo:

int a = 20;
		int b = 5;
		
		if (a == 20 ^ b == 5) {
			System.out.println("True");
		} else {
			System.out.println("False");
		}

Esse operador funciona da seguinte maneira:

  • Somente uma das condições precisa retornar true;
  • Mesmo se a primeira condição do lado esquerdo for verdadeira, é feita a verificação da condição do lado direito;
  • E esse operador só avalia valores booleanos;

Então no seu caso ele estava somando porque da forma que foi colocado não era um valor booleano e realmente uma conta.

No exemplo acima a primeira condição é verdadeira, mesmo assim ele verifica a segunda condição que também é verdadeira.

Espero ter ajudado! :smiley:

ViniGodoy

Como o colega acima explicou, ele faz o ou exclusivo. E faz isso bit a bit.

No seu caso:
a: 10100 (valor binário de 20) ^
b: 00101 (valor binário de 5)
-----------
R: 10001

Resposta: 17

O operador de ou exclusivo se A for verdadeiro e B for falso, ou se A for falso e B for verdadeiro.
Falso nos demais casos.

Uma característica interessante desse operador é que ele é reversível. Ou seja, se você aplica-lo duas vezes, você volta ao número original:
R: 10001 ^
b: 00101
----------
a: 10100

Por isso ele é tão usado em criptografia.

Criado 4 de junho de 2011
Ultima resposta 4 de jun. de 2011
Respostas 2
Participantes 3