为什么 ~0 return -1?
Why does ~0 return -1?
这是我试过的代码:
int num = ~0;
System.out.print(num);
输出:-1
据我了解,~
反转位。因此,0000 0000
将变为 1111 1111
。这-1
怎么样?我意识到这是一个非常基本的问题,涉及补码,但我无法弄清楚。
因为-1
表示全1
System.out.println(Integer.toBinaryString(-1));
输出是
11111111111111111111111111111111
1111 1111 实际上是-1,1111 1110 实际上是-2。生活就是这样,不知道怎么说
数字以 32 位格式表示。
理解为什么它显示为全 1 然后转换为 -1。
原因:
~0 = ~(00000000 00000000 00000000 00000000) = (11111111 11111111 11111111 11111111) = -1
要了解更多信息,请阅读此主题:How does the bitwise complement (~) operator work?
这是我试过的代码:
int num = ~0;
System.out.print(num);
输出:-1
据我了解,~
反转位。因此,0000 0000
将变为 1111 1111
。这-1
怎么样?我意识到这是一个非常基本的问题,涉及补码,但我无法弄清楚。
因为-1
表示全1
System.out.println(Integer.toBinaryString(-1));
输出是
11111111111111111111111111111111
1111 1111 实际上是-1,1111 1110 实际上是-2。生活就是这样,不知道怎么说
数字以 32 位格式表示。
理解为什么它显示为全 1 然后转换为 -1。
原因:
~0 = ~(00000000 00000000 00000000 00000000) = (11111111 11111111 11111111 11111111) = -1
要了解更多信息,请阅读此主题:How does the bitwise complement (~) operator work?