在计算机中,负数的二进制表示通常采用 补码形式,其具体规则如下:
一、符号位表示
最高位为符号位
- 0 表示正数
- 1 表示负数
例如:
- 正数 `5` 的二进制为 `0000 0000 0000 0000 0000 0000 0000 0101`(32位)
- 负数 `-5` 的符号位为 `1`,其余位为 `5` 的二进制补码
二、负数的补码计算
原码
- 正数的原码与二进制数值相同,例如 `5` 的原码为 `0000 0000 0000 0000 0000 0000 0000 0101`
- 负数的原码为符号位 `1` 加上绝对值的二进制表示,例如 `-5` 的原码为 `1000 0000 0000 0000 0000 0000 0000 1011`
反码
- 原码除符号位外,其余位按位取反,例如 `-5` 的反码为 `1111 1111 1111 1111 1111 1111 1111 0100`
补码
- 反码加 `1` 得到补码,例如 `-5` 的补码为 `1111 1111 1111 1111 1111 1111 1111 1000`
三、特殊说明
-1 的表示
- 原码、反码、补码均为 `1111 1111 1111 1111 1111 1111 1111 1111`
- 补码表示法简化了计算机运算,避免单独处理负数
数据类型的影响
- 不同数据类型(如8位、16位、32位)仅符号位固定,数值部分按实际位数扩展,例如 `int` 类型(32位)中,`-5` 完整表示为 `1111 1111 1111 1111 1111 1111 1111 1000`
四、示例总结
| 数值 | 原码| 反码| 补码|
|------|---------------------|---------------------|---------------------|
| 5| 0000 0000 0000 0000 0000 0000 0000 0101 | 0000 0000 0000 0000 0000 0000 0000 0101 | 0000 0000 0000 0000 0000 0000 0000 0101 |
| -5 | 1000 0000 0000 0000 0000 0000 0000 1011 | 1111 1111 1111 1111 1111 1111 1111 0100 | 1111 1111 1111 1111 1111 1111 1111 1000 |
通过补码表示法,计算机能够统一正负数的存储和运算,简化了硬件设计。