📝 我的笔记

还没有笔记

选中页面文字后点击「高亮」按钮添加

原反补移码笔记

📜 原文
📖 逐步解释
∑ 公式拆解
💡 数值示例
⚠️ 易错点
📝 总结
🎯 存在目的
🧠 直觉心智模型
💭 直观想象

1内容

下面用中文把 原码sign-magnitude )、 反码one’s complement )、 补码two’s complement )、 移码bias / excess / offset binary )分别“用来干什么”、为什么出现、各自擅长什么,并用同一组 8 位8-bit )具体数值例子对比。


11) 原码 ( Sign-Magnitude )是干什么的

1. 核心用途

$$ \text{value} = (-1)^{s}\cdot \text{magnitude} $$

其中 符号位 $s=b_7$幅值 $\text{magnitude}=\sum_{i=0}^{6} b_i 2^i$

2. 为什么它不常用于整数运算

3. 8 位具体数值示例

例 1: 10001010 (8 位)

例 2:10000000


22) 反码 ( One’s Complement )是干什么的

1. 核心用途

$$ x<0 \Rightarrow \text{bits}(x)=\sim \text{bits}(|x|) $$

2. 优点

3. 致命缺点(为什么后来被补码取代)

即最高位产生的进位要“加回最低位”,硬件更复杂。

4. 8 位具体数值示例

例:用 +5 构造 -5

再看 -0


33) 补码 ( Two’s Complement )是干什么的(最重要)

1. 核心用途

$$ -x = (\sim x)+1 $$

2. 为什么它成为整数的事实标准

3. 8 位具体数值示例(强对比)

例 1:把 -5 编成 8 位补码

验证(用公式):$U=\text{int}(11111011_2)=251$

$$ 251-256=-5 $$

例 2:最小值 -128

$$ 128-256=-128 $$

这也是你在作业里看到 10000000 在补码里是 -128 的原因。


44) 移码 ( Bias / Excess / Offset Binary )是干什么的

1. 核心用途

$$ \text{stored} = x + B \quad\Longleftrightarrow\quad x = \text{stored} - B $$

2. 典型场景:浮点数指数(exponent)

比如 8 位移码常用偏置 $B=127$(因为 $2^{7}-1=127$),这就是你在浮点题里会遇到的那种。

3. 8 位具体数值示例(取 bias=127)

$$ \text{stored}=0+127=127 $$

127 的 8 位二进制:01111111

$$ \text{stored}=5+127=132 $$

132 的 8 位:10000100

$$ \text{stored}=-5+127=122 $$

122 的 8 位:01111010

4. 你应该立刻抓住的直觉

因为它只是整体加了一个常数 $B$


55) 一句话对比总结(带用途)


如果你把作业后面 浮点数floating-point )那题贴出来,我可以把 移码指数尾数mantissa/significand )、 规格化normalization )用同样的“具体数值”方式串起来讲清楚。