浮点数的加减运算过程比定点数复杂,主要分为五个步骤:对阶、尾数求和、规格化、舍入、溢出判定。 重点

考试规范与常见错误 重点

  • 预处理: 必须先写出操作数的机器数形式(阶码、尾数的补码形式)。
  • 真值还原: 最终答案必须写成真值形式(如 ),不能只停留于补码阶段。
  • 进制规范: 阶码是二进制的。严禁出现 9 或 7 等非二进制数字。例如阶码为 时应写为 (表示十进制的 ),若错写为十进制指数需扣分。
  • 规格化判别:
    • 补码规格化形式为:
    • 左规: 尾数出现 时,尾数左移,阶码减 1。
    • 右规: 尾数出现 (即溢出)时,尾数右移,阶码加 1。 重点

1. 对阶 (Alignment)

对阶的目的是使两个浮点数的小数点位置对齐,即令两数的阶码相等。

  • 规则: 小阶向大阶看齐重点
  • 操作:
    • 计算阶差
    • ,则 看齐: 增加,尾数 右移。
    • ,则 看齐: 增加,尾数 右移。
  • 注意: 尾数右移时,最高位补符号位(补码右移规则),最低位移出。移出位可能导致精度损失,需在后续步骤中处理。

2. 尾数求和 (Mantissa Addition/Subtraction)

将对阶后的尾数按定点数加减运算规则进行运算。通常采用双符号位的补码运算。

3. 规格化 (Normalization)

运算结果的尾数必须符合 规格化浮点数 的要求。

  • 左规: 当结果为 00.0...11.1... 时,需左移尾数,同时阶码减小。
  • 右规: 当结果发生溢出(符号位为 0110)时,需右移尾数一位,同时阶码加 1。 重点

4. 舍入 (Rounding)

在对阶或右规过程中,尾数低位可能被移出,为减小误差需进行舍入。

  • 0 舍 1 入法: 移掉的是 0 则舍去,移掉的是 1 则在尾数末位加 1。
  • 恒置 1 法: 无论移掉的是 0 还是 1,都将尾数末位置 1。
  • 教材差异: 蒋老师教材中提到,在对阶过程中尾数右移若丢弃了位,直接按舍入原则处理。 重点

5. 溢出判定 (Overflow Check)

浮点数的溢出是以阶码是否溢出为标志的。

  • 上溢: 阶码超过了机器所能表示的最大正指数,此时需进行溢出处理。
  • 下溢: 阶码小于机器所能表示的最小负指数,通常视为 0 处理。

相关概念: 浮点数表示, 规格化浮点数