我使用该~
操作进行位操作,我只是想知道 Java 是如何计算负数的?
我检查了Java文档:
“一元按位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”成为“1”,每个“1”成为“0”。例如,一个字节包含8 位;将此运算符应用于位模式为“00000000”的值会将其模式更改为“11111111”。
所以如果int a = 60 (0011 1100)
,那么int c = ~a (1100 0011)
。
问题是,Java 如何计算负数1100 0011 = -61
?唯一1100 0011
的计算方法-61
是
- 最高位是符号位。
-2^6 + 2^1 + 2^0 = -61
.
但这对我来说毫无意义。