定点数的编码表示
定点数:小数点的位置固定 Eg:996.007 ——常规计数
浮点数:小数点的位置不固定 Eg:9.96007*102 ——科学计数法
无符号数
- 定义:整个机器字长的全部二进制位表示数值,无符号位, 相当于数的绝对值。
有符号数的定点表示
- 符号位:最高位为符号位(0 正 1 负),数值部分称尾数。
- 原码:
- 表示:符号位(0/1表正负) + 尾数绝对值。(定点小数)若机器字长为n+1位,则尾数占n位
- 范围:
若机器字长n+1位,原码整数的表示范围:
−(2^(n−1)) ≤ x ≤ 2^(n−1)(关于原点对称)
若机器字长n+1位,原码小数的表示范围:
−(1−2^−n) ≤ x ≤ 1−2^(−n)(关于原点对称)
- 反码:
- 表示:
若符号位为0,则反码与原码相同
若符号位为1,则数值位全部取反
-
- 范围:与原码相同,0 有 + 0 和 - 0 两种表示。
若机器字长n+1位,反码整数的表示范围:
−(2^(n−1)) ≤ x ≤ 2^( n−1)(关于原点对称)
若机器字长n+1位,反码小数的表示范围:
−(1−2^(−n)) ≤ x ≤ 1−2^(−n)(关于原点对称)
- 补码:
- 表示:正数同原码,负数 = 反码 + 1.
- 将负数补码转回原码的方法相同:尾数取反,末位+1
- 范围:
定点整数补码 [x]补 = 1,0000000 表示 x = -2^(7)
若机器字长n+1位,补码整数的表示范围:
−2^n ≤ x ≤ 2^(n-1)比原码多表示一个 −2n )
定点小数补码 [x]补 = 1.0000000 表示 x = -1
若机器字长n+1位,补码小数的表示范围:
−1 ≤ x ≤ 1−2^(−n) (比原码多表示一个 −1 )
- 移码:
- 表示:补码符号位取反,仅用于整数。
- 范围:
与补码相同,移码大小直接反映真值大小(全 0 最小,全 1 最大)。
若机器字长n+1位,移码整数的表示范围:
−2^n ≤ x ≤ 2^(n−1) (与补码相同)
对比总结
编码 |
符号位 |
0 的表示 |
整数范围(n 位) |
小数范围(n 位) |
原码 |
0/1 |
+0/-0 |
(-(2^{n-1}-1) ---2^{n-1}-1) |
(-(1-2^{-n}) --- 1-2^{-n}) |
反码 |
0/1 |
+0/-0 |
同原码 |
同原码 |
补码 |
0/1 |
唯一 |
(-2^{n-1} --- 2^{n-1}-1) |
(-1 --- 1-2^{-n}) |
移码 |
取反补码 |
唯一 |
同补码 |
不用于小数 |
问题:
定点整数 x=50,用8位原码、反码、补码、移码表示。
定点整数 x=-100,用8位原码、反码、补码、移码表示。
技巧:由[x]补 快速求 [-x]补 的方法
符号位、数值位全部取反,末位+1
各种码的作用(拓展)
- 补码的核心作用:将减法转换为加法,简化硬件设计。
- 例:(10-3 = 10 + (-3) {补码} = (10 + 9)模{ 12 } = 19 mod 12=7(模运算思想)。
- 计算机中通过补码实现减法,ALU 仅需加法器,符号位参与运算。
- 移码的作用:便于整数大小比较,移码递增对应真值递增
(如移码 00000000 对应 - 128,11111111 对应 + 127)。
以上内容覆盖进制转换、BCD 码、定点数编码及补码 / 移码的应用,可帮助理解计算机数据表示与运算原理。