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 № 1Você 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.