Java中负数的二进制表示采用 二进制补码形式,具体规则如下:
一、基本规则
符号位 32位整数的最高位为符号位,0表示正数,1表示负数。
补码计算
- 原码: 直接将数值转换为二进制,符号位为1(如-5的原码为`1000 0101`)。 - 反码
- 补码:反码加1(如-5的补码为`1111 1011`)。
二、转换示例
以-5为例:
原码:
`1000 0101`
反码:
`1111 1010`
补码:
`1111 1011`(Java中`Integer.toBinaryString(-5)`结果为`11111111111111111111111111111011`)。
三、注意事项
自动补零:Java的二进制字符串表示会自动去除前导零,例如`Integer.toBinaryString(-1)`结果为`11111111111111111111111111111111`。
类型差异:不同整数类型(如`int`、`long`)位数不同,补码位数也相应变化(如`long`为64位)。
四、应用场景
补码表示法简化了计算机中的加减法运算,因为减法可转换为加法(如`-a + b`等价于`b + (-a)`)。