XOR Dúvida?!

Tenho dois números binarios > Ex: 100010 e 110010, eu queria pegar posição por posição e fazer um XOR entre eles.

Eu queria saber se existe algum método que faz isso? Ou vou ter que fazer usando um IF mesmo?!

EX:

[color=“red”]100010 -> 1 0 0 …
XOR
110010 -> 1 1 0 …

RESULTADO -> 0 1 0 …[/color]

[quote=“JAVAINICIANDO”]Tenho dois números binarios > Ex: 100010 e 110010, eu queria pegar posição por posição e fazer um XOR entre eles.

Eu queria saber se existe algum método que faz isso? Ou vou ter que fazer usando um IF mesmo?!

EX:

[color=“red”]100010 -> 1 0 0 …
XOR
110010 -> 1 1 0 …

RESULTADO -> 0 1 0 …[/color][/quote]

[quote]OPERADORES DE DESLOCAMENTO BIT-A-BIT
O operador de deslocamento bit-a-bit para a esquerda, anotado como <<, faz com que os bits sejam deslocados o número de casas indicadas, ou seja, multiplica-se o número original por 2 elevado ao número de casas indicado. Veja:

int meuNro = 3;
int meuShift = meuNro << 2;

O valor de meuShift é igual a 12. Acompanhe: o valor binário de 3 é 0011. Deslocando os bits duas casas à esquerda teremos 1100, que corresponde a 12. Efetuamos em binário o mesmo que 3 x (2 ao quadrado) ou 3 x 4 = 12.

O operador de deslocamento bit-a-bit para a direita, anotado como >>, faz com que os bits sejam deslocados o número de casas indicadas, ou seja, obtém-se o valor inteiro da divisão do número original por 2 elevado ao número de casas indicado. Veja:

int nroOriginal = 15;
int meuShift = nroOriginal >> 1;

O valor de meuShift é igual a 7. Acompanhe: o valor binário de 15 é 1111. Deslocando os bits uma casa à direita teremos 0111, que corresponde a 7. Efetuamos em binário o mesmo que 15 / (2 elevado a 1) ou o inteiro de 15 / 2 = 7.
[/quote]

[quote]Operadores de Deslocamento: <<, >> e >>>

Operação de deslocamento corresponde simplesmente a mover bits para a direita ou para a esquerda. Exemplos de deslocamento estão retratados na figura 2.

Dado original 00000000 11000000
Deslocado 1 bit para a esquerda 00000000 10000000
Deslocado 1 bit para a direita 00000000 01100000

O resultado de um valor que sofreu deslocamento contém a mesma quantidade de bits do valor original. Os bits deslocados para fora da representação são descartados. Os novos bits que entram na representação após o deslocamento são 0 caso seja usado o operador de deslocamento à esquerda (<<) ou o operador de deslocamento à direita sem sinal (>>>). O operador de deslocamento à direita com sinal (>>) comporta-se de maneira diferente. Quando o operador >> é usado, os novos bits que entram na representação têm o mesmo valor do bit mais significativo antes do deslocamento. Por exemplo, se o bit mais significativo seja 1 (o número é negativo), bits com valor 1 são introduzidos no caso de um deslocamento.[/quote]
aqui tbm :arrow: :idea:

É isso ?
Um Abraço!

Amigo eu acho que não e bem isso!!

Voce esta ligado em lógica matematica o operador XOR, que o pessoal chama de OU EXCLUSIVO.

EX:

V XOR V -> F
F XOR V -> V
V XOR F -> V
F XOR F -> F

Ta ligado.

Neste meu exemplo eu to usando o 0 (zero) como falso e 1 como verdadeiro.

E assim pega dois números binários e vai resolvendo, posição por posição, ta ligado!

[quote=“JAVAINICIANDO”]Amigo eu acho que não e bem isso!!

Voce esta ligado em lógica matematica o operador XOR, que o pessoal chama de OU EXCLUSIVO.

EX:

V XOR V -> F
F XOR V -> V
V XOR F -> V
F XOR F -> F

Ta ligado.

Neste meu exemplo eu to usando o 0 (zero) como falso e 1 como verdadeiro.

E assim pega dois números binários e vai resolvendo, posição por posição, ta ligado![/quote]

Entendi…foi mal ae :oops:
Um abraço.

Nem com o BigInteger Funciona ?

[quote]BigInteger xor(BigInteger val)
Returns a BigInteger whose value is (this ^ val). [/quote]

[quote]xor
public BigInteger xor(BigInteger val)Returns a BigInteger whose value is (this ^ val). (This method returns a negative BigInteger if and only if exactly one of this and val are negative.)

Parameters:
val - value to be XOR’ed with this BigInteger.
Returns:
this ^ val[/quote]

:oops:

Não entendi. Não é só fazer isso?

int a = 1; int b = 15; int c = a ^ b;

tb acho q e isso kra

Não amigo, e em binário.

Para fazer seria assim.

[code]int num1 = 34; // em binário = 100010
int num2 = 50; // em binário = 110010

int resultado = num1 ^ num2; // em binário = 010000

.
.

//Só para verificar:

System.out.println( Integer.toBinaryString( num1 ) );
System.out.println( Integer.toBinaryString( num2 ) );
System.out.println( Integer.toBinaryString( num1 ^ num2 ) ); [/code]

Agora estou com outra dúvida.
Seguindo esse exemplo que coloquei acima, eu tenho um array com números inteiros e queria fazer o XOR entre eles.
Eu ja tentei, fazendo um FOR mas não ta dando muito certo.

Vocês podem me dar uma ajuda?!!

34 ^ 50 = 16

O que tem de errado nisso?