这是我尝试过的代码:
int num = ~0;
System.out.print(num);
输出:-1
根据我的理解,~
反转了这些位。因此,0000 0000
将成为1111 1111
。这是-1
怎么样?我意识到这是一个涉及两个补充的非常基本的问题,但我无法弄清楚。
答案 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)