IEEE 浮点表示

计算机中浮点数的表示方法采用该标准——IEEE浮点表示

形如 x × 2y 这样的数,可以通过给定 x 和 y 的值来表示。
IEEE 浮点标准用 V = (-1)s × M × 2E 的形式来表示一个数:

  • 符号(sign) s 决定这个数是正数还是负数(s=0正数,s=1负数)。
  • 尾数(significand)M是一个二进制小数。
  • 阶码(exponent)E的作用是对浮点数加权,权重是2的E次幂。

下图分别表示(C语言中)单精度浮点float 和双精度浮点 double的表示格式。
IEEE 浮点表示

  • float格式中,s、exp、和frac字段分别为1位、k=8位和n=23位,得到一个32位的表示。
  • double格式中,s、exp、和frac字段分别为1位、k=11位和n=52位,得到一个64的表示。

给定了位表示,根据exp的值,被编码的值可以分成三种不同的情况。
IEEE 浮点表示

情况1:常规值

也就是最普遍的情况。exp 的位模式不全是0,也不全是1(单精度数值为255,双精度值为2047)。阶码的值为 E = e - Bias
e 是无符号数,位表示为: ek-1 … e1e0 因此它的值在 1 ~ 254 之间(单精度),1~2046之间(双精度);
Bias 是偏置值:等于 2k-1 - 1 (单精度是127,双精度是1023)
因此,E 的值就可以得到一个范围: -126 ~ 127(单精度),-1022 ~ 1023(双精度)
小数字段 frac 被解释为描述小数值 f0 ≤ f ≤ 1
二进制表示为 0.fn-1 … f1f0
由此尾数被定义为 M = 1 + f (也叫做隐含的以1开头的表示)

情况2:非常规的值

当阶码全都为0时,所表示的数是非规格化的形式。
阶码值是 E = 1 - Bias
尾数值是 M = f,也就是小数字段的值,不包含隐含的1。

情况3:特殊值

当阶码位全为1时,表示特殊值。

  • 无穷大:阶码位全为1,小数位全为0
  • NaN:表示不是一个数(Not a Number),即阶码位全为1,小数位不全为0。
上一篇:北大王选所数据管理研究室成功举办学术交流年会


下一篇:国际*会议期刊级别介绍