浮点数运算

浮点数表示公式:N = 尾数 × 基数指数

运算完整流程:对阶 → 尾数计算 → 结果格式化(规格化)

1. 浮点数组成说明

机器内浮点数分为4个部分:阶符、阶码、数符、尾数。

  • 阶符:标记指数是正数还是负数(1位,0代表正,1代表负)。
  • 阶码:指数部分,决定数值表示范围。阶码位数越多,能表达的最大、最小数字跨度就越大。
  • 数符:标记整个浮点数正负(1位)。
  • 尾数:有效数字部分,决定数值精度。尾数位数越多,小数部分保留有效数字越多,计算误差越小。

2. 编码选择:尾数用补码,阶码用移码

  • 尾数使用补码:补码做加减运算方便,能够统一处理正数、负数的尾数计算,简化硬件加法器电路。
  • 阶码使用移码:移码非常适合比较指数大小。浮点数第一步要做对阶,需要对比两个数阶码,移码可以直接按无符号数比较大小,硬件实现简单。

3. 运算三步详细解释

① 对阶

两个浮点数做加减,阶码必须保持一致才可以运算。对阶原则:小阶向大阶看齐

也就是阶码小的那个数字,阶码增加,同时尾数算术右移;阶码大的一方保持不变。

为什么不能大阶向小阶对齐?如果把大阶降低、尾数左移,会直接把高位有效数字移出,造成严重数据丢失;右移只会丢失低位,损失较小。

② 尾数计算

阶码对齐完成后,只对两个尾数执行加法或者减法运算,阶码保持对阶之后的值不变。尾数运算会产生进位或者借位。

③ 结果格式化(规格化)

尾数计算结束之后,需要把结果转为规格化浮点数,分为左规右规两种:

  • 右规:尾数发生溢出(超过可表示范围),尾数右移,阶码+1。
  • 左规:尾数有效数字位数不足,尾数不断左移,阶码不断‑1,直到尾数满足规格化格式。

规格化目的:充分利用尾数的二进制位,最大化保证计算精度。

4. 关键特性总结(选择题高频)

  • 阶码位数 → 决定数值表示范围,和精度无关。阶码越长,能表示的数字可以更大或者更小。
  • 尾数位数 → 决定计算精度,和表示范围无关。尾数越长,小数部分有效数字越多,舍入误差越小。
  • ✅ 对阶:永远小阶向大阶看齐,小数尾数右移。
  • ⚠️ 浮点数运算会存在舍入误差,无法做到绝对精确。

5. 真题例题+解析

浮点数在机器中的表示形式如下图,若阶码的长度为e,尾数的长度为m,则以下关于浮点表示的叙述中,正确的是()。

① e的值影响浮点数的范围,e越大,所表示的浮点数值范围越大

② e的值影响浮点数的精度,e越大,所表示的浮点数精度越高

③ m的值影响浮点数的范围,m越大,所表示的浮点数范围越大

④ m的值影响浮点数的精度,m越大,所表示的浮点数精度越高

A.①③   B.②③   C.①④   D.②④

答案:C

解析:阶码e控制表示范围;尾数m控制精度。所以①、④说法正确。

6. 拓展考点:浮点数常见问题

  • 上溢:运算结果超出浮点数可以表达的最大范围,属于致命错误。
  • 下溢:运算结果绝对值太小,接近0,小于最小可表示数,一般直接当做0处理。
  • 舍入:尾数移位丢弃低位,需要做舍入处理,常见0舍1入。