浮点数 对阶 动画
软考 · 计算机组成原理 | 两个浮点数相加:对阶 → 尾数加减 → 规格化 → 舍入 → 判溢出
两个浮点数相加,不能直接加——因为它们的小数点位置(阶码)不一样。
比如 101.0 和 1.100 相加,得像列竖式一样先对齐小数点,这个动作就叫 对阶。
本页采用:5 位小数 + 1 位整数(进位) = 6 位尾数;阶码为普通整数,可表示范围 −8 ~ +7(超出即上溢/下溢)。
选一个例子:
📌 核心规则(背这 4 条)
① 对阶:小阶向大阶看齐
- 阶差
K = 大阶 − 小阶
- 把阶小的那个数尾数右移 K 位,阶码 +K
- 右移会丢低位 → 有精度损失
为什么小阶向大阶?若大阶向小阶看齐,大阶的尾数要左移,会凭空多出低位(假精度)。
② 尾数加减 + 规格化
- 对阶后尾数直接加减(定点小数)
- 结果可能溢出:形如
1.xxx → 右规(尾数右移1位,阶码+1)
- 结果可能太小:形如
0.0xxx → 左规(尾数左移,阶码减)
- 目标:回到
0.1xxx 规格化形态
③ 溢出判断:只看阶码,不看尾数!
- 尾数溢出(结果 ≥1)→ 不算溢出,右规一下就修好了(例子 B)
- 阶码上溢(阶码超过最大 +7)→ 真·溢出,报错 / 无穷大(例子 D:2⁷+2⁷ 右规后阶码 8 → 溢出)
- 阶码下溢(阶码小于最小 −8)→ 结果当 0 处理,不报错(例子 E:左规后阶码 −9 → 当 0)
一句话:阶码管范围——范围出问题才是真溢出。尾数只是精度,右规/舍入能修。
上溢 = 报错/∞;下溢 = 当 0。
④ 完整五步(考试按这个顺序写)
- 对阶:小阶向大阶看齐,小阶尾数右移 K 位
- 尾数求和/差:同阶后直接加减
- 结果规格化并判溢出:右规 / 左规
- 舍入:处理右移丢掉的低位
- 溢出判别:以阶码为准(上溢=真溢出,下溢=0)