在计算机中,正负二进制数的表示方法主要通过 符号位来区分正负,其余位表示数值。具体表示方法如下:
一、符号位表示法
最高位为符号位 - 0
表示正数
- 1表示负数
例如:
- 正数 `5` 的二进制为 `00000000 00000000 00000000 00000101`
- 负数 `-5` 的二进制为 `10000000 00000000 00000000 00000101`(8位表示)
原码表示
- 负数的原码是符号位为1,其余位为数值位的直接二进制表示
- 例如:
- `5` 的原码:`00000000 00000000 00000000 00000101`
- `-5` 的原码:`10000000 00000000 00000000 00000101`
二、补码表示(常用方法)
反码表示
- 负数的反码是符号位为1,其余位为原码数值位按位取反
- 例如:
- `5` 的反码:`00000000 00000000 00000000 00000101`
- `-5` 的反码:`11111111 11111111 11111111 11111010`
补码计算
- 负数的补码是反码加1
- 例如:
- `-5` 的补码:`11111111 11111111 11111111 11111010`(反码 `11111111 11111111 11111111 11111010` 加1后)
优势: 补码表示法简化了加减法运算,例如减法可转换为加法(如 `M - N = M + (-N)`)。 三、特殊情况说明
溢出处理:补码表示法可避免原码中的溢出问题
负零表示:补码中 `10000000` 表示 `-0`,与 `00000000` 的正零不同
四、示例总结
| 数值 | 8位原码 | 8位反码 | 8位补码 |
|------|----------------|--------------|--------------|
| 5| 00000000 00000000 00000000 00000101 | 00000000 00000000 00000000 00000101 | 00000000 00000000 00000000 00000101 |
| -5 | 10000000 00000000 00000000 00000101 | 11111111 11111111 11111111 11111010 | 11111111 11111111 11111111 11111011 |
通过上述方法,计算机能够统一处理正负数,并