convert To Binary方法用于显示8位二进制数
public static String convertToBinary(int a){
String binary="";
for(int i=0;i<8;++i){
Integer bit=new Integer(a&1);
binary=bit.toString()+binary;
a>>=1;
}
return binary;
}
public static void main(String[] args) {
int a=-9;
System.out.println(convertBinary(a)); //11110111
System.out.println(convertBinary(0xaaaa)); //10101010
System.out.println(convertBinary(a&0xaaaa)); //10100010
System.out.println(convertBinary((a&0xaaaa)>>1));//01010001
}
最后的结果证明a&0xaaaa
的结果是无符号的,有人可以解释为什么吗? 最佳答案
a
是int
,文字a&0xaaaa
也是如此。按位与运算的结果也是int
。它具有32位。用
a&0xaaaa
您已经屏蔽了
a
中除了最低位以外的所有其他位。结果是一个正的32位int
值。因此,通过打印出最低的8位(a&0xaaaa)>>1)
您所揭示的只是
a&0xaaaa
中第9位的值。请注意,即使有错误的假设,即它不比所使用的数字宽,位掩码
0xaaaa
仍然是16位值,而您只打印低8位。