Alguem tem alguma dica para se resolver códigos desse tipo?
class BitShift{
public static void main(String[] args){
int x = 0x80000000; //hex
System.out.print(x + "and ");
x = x >>> 31;
System.out.println(x);
}
}
Qual será a saida do programa?
[quote=gui]Alguem tem alguma dica para se resolver códigos desse tipo?
[code]
class BitShift{
public static void main(String[] args){
int x = 0x80000000; //hex
System.out.print(x + "and ");
x = x >>> 31;
System.out.println(x);
}
}
Qual será a saida do programa?
[/code][/quote]
Já foi falado isso aqui no GUJ!
Tem tópicos anteriores que falam da Transformação de Hex p/ Binário!
Irá imprimir esse valor em decimal + and
O segundo
x = x >>> 31;
System.out.println(x);
É bbbeeeemmm mais facil. Irá imprimir o valor 1
Por que?
Por que ele desloca para a direita 31 bits ignorando o sinal
Ou seja,
0x80000000;
Em binario é: 1000 0000 0000 0000 0000 0000 0000 0000
Deslocando 31 bits ficaria
0000 0000 0000 0000 0000 0000 0000 0001
Eu mexo com essas coisas de binário e hexadecimal desde o tempo que eu estudava engenharia, há uns 20 anos atrás, e [size=14]sempre[/size] - [size=18]sempre[/size] - [size=22]sempre[/size] faço primeiro no papel, nunca de cabeça.
É mais rápido, quando você pega a prática, e evita enganos.