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
来自哪里?
答案 0 :(得分:6)
String
返回的Integer.toBinaryString
中没有前导零。 1
中有16个0xFFFF
,但也有16个0
。
00000000 00000000 11111111 11111111 // 16 printed
然后左移1为零显着。
00000000 00000001 11111111 11111110 // 17 printed
此值转换为二进制(基数2)中的ASCII数字字符串,没有额外的前导0 。