/ / Como o java lida com os resultados dos operadores bit a bit - java, bitwise-operator, bitwise-e, bitwise-or

Como o java lida com os resultados dos operadores bit a bit - java, bitwise-operator, bitwise-e, bitwise-or

Eu tentando saber como java encontra o resultado é -ve ou + ve para operações bit a bit?

int x=-5;
int y=8;
System.out.println(x&y); //8
System.out.println(x|y); //-5

x->1 0 1 1 (2"s complement)
y->1 0 0 0
x & y -> 1 0 0 0 ->8
x | y -> 1 0 1 1 ->-5(2"s complement)

Como o java sabe que 1 0 1 1 é -5?

por que ele não dá diretamente o / p como o equivalente decimal de 11?

Aplica o complemento de 2 "em cada resultado?

Eu vi o código de montagem. São instruções IAND e IOR.

Respostas:

4 para resposta № 1

Você está executando os operadores bit a bit em inteiros de 32 bits. Então, o número "8" realmente tem muitos zeros na frente, enquanto "-5" tem muitos:

8  -> 0...01000
-5 -> 1...11011

Então, Java não precisa "saber" nada sobreo resultado ou operandos das operações do bitwiese. O "8" é um número de 32 bits que começa com 0, então é positivo. O "-5" é um número de 32 bits que começa com um "1", então é negativo.

Então, a resposta para sua pergunta

Aplica o complemento de 2 "em cada resultado?

é: Sim, já que todos os inteiros são assinados em Java, usando o complemento de 2 "s.