IEEE 754二进制浮点算术标准

1.科学记数法

IEEE 754 的开发者最终想到的方法是使用科学记数法的思想。

科学记数法是表示数字的标准方法,您可能熟悉以 10 为基数的科学记数法。

//简写±aen或±aEn
±a×10n

其中一个因数为 a(1≤|a|<10),另一个因数为 10n。例如:

3498523 = 3.498523×106
−0.0432 = −4.32×10−2

同样的方法也适用于以 2 为基数的科学记数法。例如:

−6.84 = −1.71×22
0.05 = 1.6×2−5

2.IEEE 二进制浮点算术标准

IEEE 二进制浮点算术标准 (IEEE 754) 是一种用二进制数的方式表示十进制浮点数的技术标准,由电气和电子工程师协会 (IEEE)于 1985 年制定。

(-1)sign(1 + fraction)×2exponent-bias

IEEE 754 有 3 个基本组成部分:

  1. 符号(sign)
    如果sign bit为 0,则该数字为正数,(−1)0=1。如果sign bit为 1,则该数字为负数,(−1)1=−1。
  2. 小数(fraction)
    又名尾数(mantissa)。
  3. 指数(exponent)
    power(幂指数) = exponent(指数) – bias

IEEE 754 基于以上三个组成部分分为两个:单精度和双精度。

IEEE 754二进制浮点算术标准
TYPESSIGNEXPONENTFRACTIONBIAS
Single precision1(31st bit)8(30-23)23(22-0)127
Double precision1(63rd bit)11(62-52)52(51-0)1023

3.示例:转换到IEEE 754 格式

假设我们希望把0.085(十进制)转换成单精度格式。

3.1查看数字的符号

因为 0.085 是正数,所以sign = 0

3.2base-2 科学记数法

0.085 = (−1)0(1+fraction)×2power
或
0.085/2power = (−1)0(1+fraction)
0.085/2−1 = 0.17
0.085/2−2 = 0.34
0.085/2−3 = 0.68
0.085/2−4 = 1.36

所以,0.085 = (-1)0(1+0.36)×2−4

//0.36转换成二进制
0.010111000010100011110101110000101000111101011100001011

3.3计算指数

exponent=−4+127=123=01111011

然而,单精度格式只为我们提供 23 位来表示我们数字的小数部分。我们将不得不接受一个近似值,四舍五入到第 23 位数字。所以 IEEE 754 格式的 0.085 是:

0 01111011 01011100001010001111011

4.特殊值

类似的双精度,只是用 2049 替换 255。

VALUEEXPONENTFRACTION
Exact 000
Denormalised(非规范化)0不全部是 0
Infinity(无穷)2550
Not a Number (NaN)255不全部是 0

5.浮点数范围

非规范化规范化近似基数10
单精度± 2 -149至 (1 – 2 -23 )×2 -126± 2 -126至 (2 – 2 -23 )×2 127± 约 10 -44.85至约 10 38.53
双精度± 2 -1074至 (1 – 2 -52 )×2 -1022± 2 -1022至 (2 – 2 -52 )×2 1023± 约 10 -323.3至约 10 308.3

有五个不同的数字范围,单精度浮点数无法用迄今为止提出的方案表示:

  1. 小于 – (2 – 2 -23 ) × 2 127 的负数(负溢出)
  2. 大于 – 2 -149 的负数(负下溢)
  3. 小于 2 -149 的正数(正下溢)
  4. 大于 (2 – 2 -23 ) × 2 127 的正数(正溢出)

溢出通常意味着值变得太大而无法表示。下溢是一个不太严重的问题,因为它只是表示精度的损失,它保证接近于零。

有限IEEE浮点数的总有效范围表如下所示:

基数2基数10
单精度± (2 – 2-23) × 2127大约 ±3.402823466385288598×1038.53
双精度± (2 – 2-52) × 21023大约 ±1.797693134862315708×10308.25

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/osexp/8711.html

(6)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2021年3月1日 00:55
下一篇 2021年3月26日 01:30

相关推荐

发表回复

登录后才能评论