int a=0xFFFF;
System.out.println("test1 "+Integer.toBinaryString(a));
a<<=1;
System.out.println("test2 "+Integer.toBinaryString(a));
Output:
test1 1111111111111111
test2 11111111111111110
我的问题是,
0
是哪里来的? 最佳答案
从String
返回的Integer.toBinaryString
中没有前导零。 1
中有16个0xFFFF
,但也有16个0
。
00000000 00000000 11111111 11111111 // 16 printed
然后左移1表示零。
00000000 00000001 11111111 11111110 // 17 printed
Integer.toBinaryString
javadocs该值将转换为二进制(以2为基)的ASCII数字字符串,且没有多余的前导0。