你实际上很亲密。
在二进制中,不为0应该为1
是的,当我们谈论一点时,这是绝对正确的。
但是,
int其值为0实际上是全零的32位!
~将所有32个零转换为32个零。
System.out.println(Integer.toBinaryString(~0));// prints "11111111111111111111111111111111"
这是的补码表示形式
-1。
类似地:
System.out.println(Integer.toBinaryString(~1));// prints "11111111111111111111111111111110"
也就是说,对于32位无符号
int二进制补码表示,
~1 == -2。
进一步阅读:
- 补码
- 这是Java(以及其他系统)用来表示带符号的数字位的系统
- JLS 15.15.5按位补码运算符
~
- “请注意,在所有情况下,均
~x
等于(-x)-1
”
- “请注意,在所有情况下,均



