原码 · 反码 · 补码 · 移码
转换动画
软考 · 计算机组成原理 | 数据表示 | 点「下一步」看真值怎么一步步变成四种码
先记住一句话:
正数三码相同;负数取反、加一、翻符号位
。 上排四行从左到右:
原码
(符号+绝对值)→
反码
(数值取反)→
补码
(反码+1)→
移码
(补码翻符号位)。 最右数字 = 每种码当作二进制数读出的
编码值
,看它怎么从"负数最大"变成"负数最小"。
整数:
+45
-45
+1
-1
+127
-128
0
纯小数:
+0.5
-0.5
-0.25
🔢 编码顺序对比(同一个数,各码编码值在数轴上的位置)
补码:负数编码反而靠右(顺序反了)
移码:负数在左、正数在右(编码=数值顺序 ✓)
补码编码
移码编码
真值 X
+45
|45| = 101101₂
n=8 位:1 符号位 + 7 数值位
原码
True Form
符号位 + 绝对值
反码
One's Complement
负:数值位取反
补码
Two's Complement
负:反码末位 +1
移码
Shifted / Bias
补码符号位取反
◀ 上一步
下一步 ▶
▶ 自动播放
↺ 重置
原码
最高位符号:0 正 / 1 负,其余 = 绝对值
0 有两种:+0=00000000、-0=10000000
范围:-127 ~ +127
反码
负数 = 原码数值位
按位取反
(符号位不动)
正数反码 = 原码,0 也有 ±0 两种
它是算补码的中间步骤
补码
负数 = 反码
末位 +1
(取反加一)
0 唯一
、多表示一个 -128(`10000000`)
减法转加法:`[X-Y]补=[X]补+[-Y]补`,机器用补码
移码
正负都一样
:移码 = 补码
符号位取反
(=真值+128)
移码首位:
1 表正、0 表负
(与补码相反)
编码大小 = 数值大小,浮点
阶码
专用
0 唯一:10000000