转移位,它来自哪里?

时间:2014-03-13 19:39:49

标签: java bits

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来自哪里?

1 个答案:

答案 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