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。

07-26 03:07