Appearance
题目
浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为 5 位和 7 位(均含 2 位符号位)。若有两个数 X=,Y=,则用浮点加法计算 X+Y 的最终结果是( )。
错因
A
在尾数加法或对阶环节算崩了,得到了一个**尾数双符号位为 11(负数)**的伪结果——X、Y 都是正数,X+Y 不可能是负数,所以这个结果从直觉上就该警觉。常见诱因是把 X+Y 误算成 X−Y、或对阶时尾数移位的方向 / 步数错位,再叠加一次符号位丢失。这种"完全不像中间结果也不像终值"的选项是干扰项,凡是凑到这种值都该回头查每一步的双符号位。
B
把尾数加法的中间结果当成了最终答案。尾数 ,双符号位 01 表示尾数发生上溢,必须做"右规"——右移 1 位、阶码 +1。选 B 的考生在加完尾数那一步就停手了,跳过了规格化步骤;以为"双符号位 01 也是合法表示",但 IEEE 风格的规格化要求尾数双符号位必须相同(00 或 11)。
C
做完了对阶 → 加 → 右规,得到 01000 0010001,最后漏了"判溢出"那一步。问题在阶码:右规之后阶码从 (=7)+1 变成 (双符号位 01),这意味着阶码上溢——它已经超出本题阶码 5 位补码(含 2 符号位、3 位数值)的最大表示范围 7。选 C 的人是"流程跑通了但忘了核最后一关",这正是这道题的核心陷阱:题面专门提到"判溢出"步骤,就是要逼你做完不要急着提交。
总解析
第一步:编码 X 和 Y
把真值转成本题约定的补码(阶 5 位 / 尾 7 位,均含 2 位符号位):
| 数 | 阶码真值 | 尾数真值 | 阶码补码 | 尾数补码 |
|---|---|---|---|---|
| X | 7 | |||
| Y | 5 |
第二步:对阶(小阶向大阶看齐)
阶差 。让 Y 的阶码 +2,尾数对应右移 2 位(双符号位保持、正数高位补 0):
| 阶码 | 尾数 | |
|---|---|---|
| Y 原始 | ||
| Y 对齐后 | ||
| X |
第三步:尾数相加
得到尾数 。双符号位 01(不同)→ 尾数上溢,必须右规。
第四步:右规(尾数右移 1 位 + 阶码 +1)
| 项 | 右规前 | 右规后 |
|---|---|---|
| 尾数 | ||
| 阶码 | (=+7) |
第五步:判溢出(关键步骤)
右规后阶码变成 ,双符号位 01(不同)→ 阶码上溢。
阶码 5 位补码(含 2 符号位、3 位数值)的合法表示范围是 。右规要求 ,已经超出最大表示范围 7。
阶码溢出 ⇒ 整体结果溢出,浮点加法无法给出正确表示。
最终答案是 D(发生溢出)。
这道题的硬核陷阱在最后一步:从"对阶 → 加 → 右规"流程上看,C 选项 01000 0010001 是一个"看起来已经完成了的"结果——题面专门提到"判溢出"就是为了考查你做完流程后还要不要再核一遍阶码。判断溢出的标准是看阶码的双符号位是否相同(00 或 11 → 合法;01 → 上溢;10 → 下溢)。