我使用该~操作进行位操作,我只是想知道 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.
但这对我来说毫无意义。