为什么~0返回-1?

时间:2015-01-14 04:02:22

标签: java bit-manipulation

这是我尝试过的代码:

int num = ~0;
System.out.print(num);

输出:-1

根据我的理解,~反转了这些位。因此,0000 0000将成为1111 1111。这是-1怎么样?我意识到这是一个涉及两个补充的非常基本的问题,但我无法弄清楚。

3 个答案:

答案 0 :(得分:3)

因为-1表示为全部。

System.out.println(Integer.toBinaryString(-1));

输出

11111111111111111111111111111111

答案 1 :(得分:2)

数字以32位格式表示。

要理解为什么它显示为全1,然后转换为-1。

原因:

~0 = ~(00000000 00000000 00000000 00000000) = (11111111 11111111 11111111 11111111) = -1

要了解更多信息,请阅读以下主题:How does the bitwise complement (~) operator work?

答案 2 :(得分:1)

事实上,1111 1111实际为-1,11111 1110实际为-2。这就是生活,不知道怎么回事呢