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.
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.
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!
D
dsfextremePJ
“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!
Entendi…foi mal ae :oops:
Um abraço.
D
dsfextremePJ
Nem com o BigInteger Funciona ?
BigInteger xor(BigInteger val)
Returns a BigInteger whose value is (this ^ val).
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
:oops:
S
SchuenemannPJ
Não entendi. Não é só fazer isso?
int a = 1;
int b = 15;
int c = a ^ b;
C
CassolatoPJ
tb acho q e isso kra
J
JAVAINICIANDOPJ
Não amigo, e em binário.
Para fazer seria assim.
intnum1=34;// em binário = 100010 intnum2=50;// em binário = 110010 intresultado=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));
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.