好的,我来帮你系统梳理 原码、反码、补码 的概念、计算方法及应用,并附示例,方便快速理解。
1️⃣ 概念概述
在计算机中,整数的二进制表示有多种形式:
名称 | 含义 | 用途 |
---|---|---|
原码(Sign-Magnitude) | 用最高位表示符号,0 正数,1 负数,其余位表示数值大小 | 理解数字符号 |
反码(One’s Complement) | 正数同原码,负数是原码按位取反(符号位除外) | 早期负数表示 |
补码(Two’s Complement) | 正数同原码,负数 = 反码 +1 | 现代计算机标准,简化加减法运算 |
补码是目前 计算机中表示整数的标准方式。
2️⃣ 原码(Sign-Magnitude)
- 规则:
- 正数:符号位 0,数值位表示大小
- 负数:符号位 1,数值位表示大小
- 优点:直观,容易理解符号
- 缺点:加减法运算复杂,需要区分符号
示例(8位二进制):
十进制 | 原码 |
---|---|
+5 | 00000101 |
-5 | 10000101 |
3️⃣ 反码(One’s Complement)
- 规则:
- 正数:反码 = 原码
- 负数:反码 = 原码除符号位外,按位取反
- 特点:
- 可以表示负数,但存在 正负零 问题(00000000 和 11111111)
示例(8位二进制):
十进制 | 原码 | 反码 |
---|---|---|
+5 | 00000101 | 00000101 |
-5 | 10000101 | 11111010 |
4️⃣ 补码(Two’s Complement)
- 规则:
- 正数:补码 = 原码
- 负数:补码 = 反码 + 1
- 优点:
- 加减法统一处理,无需区分符号
- 只有一个零(00000000)
- 计算机现代标准表示整数
示例(8位二进制):
十进制 | 原码 | 反码 | 补码 |
---|---|---|---|
+5 | 00000101 | 00000101 | 00000101 |
-5 | 10000101 | 11111010 | 11111011 |
验证加减法:
5 + (-5) = 00000101 + 11111011 = 00000000 (忽略进位)
✅ 正确
5️⃣ 转换方法总结
- 正数:
- 原码 = 反码 = 补码
- 负数:
- 原码:符号位 1 + 数值二进制
- 反码:原码除符号位取反
- 补码:反码 +1
公式:
补码 = 负数的绝对值二进制 → 按位取反 → +1
6️⃣ 示例练习
- 十进制 -9(8位表示):
- 正数 9 的二进制:00001001
- 原码:10001001
- 反码:11110110
- 补码:11110111
- 验证:
-9 + 9 = 11110111 + 00001001 = 100000000
忽略第9位进位 => 00000000 ✅
7️⃣ 小结
特性 | 原码 | 反码 | 补码 |
---|---|---|---|
符号位 | 0正1负 | 0正1负 | 0正1负 |
正数表示 | 直接二进制 | 同原码 | 同原码 |
负数表示 | 符号位1+数值 | 除符号位取反 | 反码+1 |
运算 | 加减法需区分符号 | 可加减,但存在正负零 | 加减法统一,标准方法 |
零的表示 | +0, -0 | +0, -0 | 只有 0 |
补码是现代计算机中 标准整数表示法,理解补码是学计算机组成原理和底层编程的基础。
发表回复