二进制反码和补码是计算机中用于表示负数的两种方法,其核心规则如下:
一、原码
定义 原码是最直观的表示方法,最高位为符号位(0表示正数,1表示负数),其余位表示数值大小。
示例
- 正数:+5(十进制)= `0000 0101`(8位)
- 负数:-5(十进制)= `1000 0101`(8位)
二、反码
规则
- 正数: 反码与原码相同 - 负数
示例 - 正数:+5 = `0000 0101`(反码相同)
- 负数:-5 = `1111 1010`(原码取反)
三、补码
规则
- 正数: 补码与原码相同 - 负数
示例 - 正数:+5 = `0000 0101`(补码相同)
- 负数:-5 = `1000 0101`(反码加1)= `1000 0110`
四、关系总结
| 数值类型 | 原码 | 反码 | 补码 | 转换关系 |
|----------|------------|------------|------------|------------------------|
| 正数 | 0xxxxxxx | 0xxxxxxx | 0xxxxxxx | 直接相同 |
| 负数 | 1xxxxxxx | 1000...0101(符号位不变,其余取反) | 1000...0110(反码+1) | 补码=反码+1,原码=补码减1 |
五、应用说明
运算简化:
补码系统简化了加减法运算,无需单独处理负数(加法直接按位运算,减法转化为加法)
溢出处理:补码能统一表示正负数,避免溢出问题
通过以上规则,可以系统地理解和转换二进制数的原码、反码和补码。