Skip to content

2015年 408 计算机组成原理 第 14 题

计算机组成原理2015年选择题2分

题目

下列有关浮点数加减运算的叙述中,正确的是( )。

Ⅰ. 对阶操作不会引起阶码上溢或下溢

Ⅱ. 右规和尾数舍入都可能引起阶码上溢

Ⅲ. 左规时可能引起阶码下溢

Ⅳ. 尾数溢出时结果不一定溢出

错因

A

漏选了 Ⅰ 和 Ⅳ。漏 Ⅰ:可能误以为对阶时小阶向大阶看齐会让小数的阶码"上溢到"大阶,实际上大阶本身就是合法的浮点数表示,不可能"溢出"——对阶只是改写小阶那个加数的阶码到一个已存在的合法值。漏 Ⅳ:把"尾数溢出"和"结果溢出"等同了,没意识到尾数溢出是可以靠右规化解的。

B

漏选了 Ⅲ。错答 Ⅲ "左规时可能引起阶码下溢"——可能记错成"只有右规会引起阶码越界"。实际上左规和右规对阶码的影响是对称的:右规阶码 +1(可能上溢),左规阶码 −1(可能下溢)。两个方向都可能越过表示范围。

C

漏选了 Ⅱ。错答 Ⅱ "右规和尾数舍入都可能引起阶码上溢"——多半只承认"右规会上溢",不接受"尾数舍入也能上溢"。实际场景:尾数舍入时最低位的进位可能传播到尾数最高位,比如尾数 1.111…1 + 舍入位 → 10.000…0,这时尾数本身又溢出了,必须再做一次右规——这次右规就可能把已经接近上界的阶码顶出去。

总解析

浮点加减运算的标准流程是 对阶 → 尾数加减 → 规格化 → 舍入 → 溢出判断。这道题的四个判断恰好覆盖了流程中每一步对阶码和尾数的影响。逐项验证:

Ⅰ. 对阶不会引起阶码上溢或下溢 ✓

对阶规则是"小阶向大阶看齐"——把阶码较小的那个加数的尾数右移、阶码加大到与另一个加数相等。

  • 大阶本身就是输入数据的合法阶码,把它赋给另一个加数后,阶码仍在合法范围内
  • 所以对阶过程中阶码永远不会越界

会越界的反而是尾数——尾数右移可能丢失精度甚至全为 0("大数吃小数")。但题目问的是阶码上下溢,所以 Ⅰ 正确。

Ⅱ. 右规和尾数舍入都可能引起阶码上溢 ✓

触发场景阶码变化风险
右规(尾数加减后绝对值 ≥ 1,需右移)阶码 +1可能上溢
尾数舍入后进位到最高位 → 又触发一次右规阶码再 +1可能上溢

第二种就是关键:尾数 1.111…1 舍入加 1 → 10.000…0,此时尾数又溢出,要再次右规、阶码再 +1。如果此时阶码已经接近上界,这一步就把它顶出去了。所以"舍入间接引起上溢"是 Ⅱ 的实质。

Ⅲ. 左规时可能引起阶码下溢 ✓

左规:尾数加减后绝对值 < 0.5(即尾数最高有效位不在小数点后第 1 位),需要左移尾数、阶码 −1

  • 极端情况:相近大小的数相减导致有效位大量抵消(catastrophic cancellation),可能要连左规多次,阶码连续 −1
  • 阶码减到下界以下 → 下溢

所以 Ⅲ 正确。

Ⅳ. 尾数溢出时结果不一定溢出 ✓

"尾数溢出" ≠ "浮点数溢出"。尾数溢出是指尾数加减后绝对值 ≥ 1(比如 0.1xxx + 0.1xxx = 1.0xxx),但这种情况可以通过右规化解:

尾数状态处理结果
尾数加完 ≥ 1(溢出)右规一次(阶码 +1)重新规格化,结果有效
右规后阶码超出上界此时才是真正的浮点数上溢

所以"尾数溢出"只是中间状态,真正的"结果溢出"取决于右规后阶码是否越界。Ⅳ 正确。

综合

命题判断关键依据
对阶只是把小阶变成已存在的大阶,不会越界
右规直接 +1;舍入进位 → 二次右规 → 也 +1
左规阶码 −1,可能跌出下界
尾数溢出可被右规化解,并不必然导致浮点上溢

四项全对。

最终答案是 D(Ⅰ、Ⅱ、Ⅲ、Ⅳ)

速记

  • 对阶看齐合法值 → 阶码不溢
  • 右规 +1,左规 −1 → 都可能越界
  • 舍入进位会触发二次右规 → 也归到"右规上溢"账上
  • 尾数溢出 ≠ 浮点溢出 → 中间状态可补救

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数