深入理解计算机系统(第2章 信息的表示和处理③)

2.4 浮点数

image

2.4.1 二进制小数

我们套用十进制小数的定义

考虑一个形如\(b_{m}b_{m-1}…b_{1}b_{0}.b_{-1}b_{-2}…b_{n-1}b_{n}\)的二进制表示法。
用这种表示方法表示的二进制小数b定义如下:
\(b\) = \(\sum_{i=-n}^{m}2^i×b_{i}\)

2.4.2 IEEE(电气和电子工程师协会,读做“eye-triple-ee”)浮点表示

IEEE浮点标准用\(V\) = \((-1)^{s}×M×2^{E}\)的形式来表示一个数:

  • 符号(sign)——s。
  • 尾数(significand)——M,二进制小数,范围是1到2-\(ε\),或者是0到1-\(ε\)
  • 阶码(exponent)——E,对浮点数加权,权重是2的E次幂(可能是负数)。

将浮点数的位表示划分为三个字段分别进行编码:

  • 一个单独的符号位s直接编码符号s。
  • k位的阶码字段exp = \(e_{k-1}…e_{1}e_{0}\)编码阶段E。
  • n位小数字段frac = \(f_{n-1}…f_{1}f_{0}\)编码尾数M。(依赖阶码字段的值是否等于0)

image
给定位表示,根据exp的值,被编码的值可以分成三种不同的情况:
情况1:规格化的值
image
情况2:非规格化的值
image
逐渐下溢(gradual underflow)
情况3:特殊值
image

IEEE编码方式的特殊性质:
image

2.4.3 数字示例

image

示例1:
image

  • 特征:非规格化数是等间距的,规格化数的间距由小变大

示例2:
image
image

2.4.4 舍入(rounding)

因为表示方法限制了浮点数的范围和精度,所以浮点运算只能近似地表示实数运算。需要通过舍入来找到最接近的匹配值。
舍入的四种方式:

  • 向偶数舍入(round-to-even)/向最接近的值舍入(round-to-nearest)——浮点数运算默认的舍入模式一组正数的总和将始终被高估或者低估。(这里偶数的特征是二进制编码末位是0)
  • 向零舍入
  • 向下舍入
  • 向上舍入

后三种方式产生实际值的确界(guaranteed bound),且都会统计偏差。

2.4.5 浮点运算

image

  • 加法
    image
  • 乘法
    image

2.4.6 C语言中的浮点数

image
image

2.5 小结

posted @ 2022-09-13 20:26  kirin-dev  阅读(38)  评论(0编辑  收藏  举报