IEEE-754标准

数值表示与计算

Posted by 渚汐 on October 28, 2024

IEEE 754定义了浮点数的表示方法和运算方法

表示方法

单精度浮点数

32位,分为:

IEEE-754

一位符号位sign ==S== 八位指数位exponent ==E==,称为阶码 23位小数位fraction ==M==

其中定义了偏置量bias=$2^{e-1}-1$,其中e是指数位的位数,在单精度浮点数中,为$2^7-1=127$

为什么要用偏置量

小数值的计算公式为:

$(-1)^SM2^{E-bias}$ 因为E为全0和全1是特殊情况 ==所以指数的范围是-126~127==

下面进行分类讨论:

格式化数值 阶码不全为0也不全为1

M等于小数位前补1,例如fraction位为1101,那么实际的M为$1.1101_2$

bias按照上面的公式计算

非格式化数值 阶码全为0,但是小数位不全为0

此时指数为1-bias而不是E-bias,这样可以使数字平滑过渡 M前不补1

特殊值

  1. 阶码全为0,小数位全为0 为0,有正负之分,由符号位决定
  2. 阶码全为1,小数位全为0 无穷大,有正负之分,由符号位决定
  3. 阶码全为1,小数位不全为0 NaN->非数字

双精度浮点数

规则同上

符号位1位 指数位11位 小数位52位

bias=$2^{10}-1=1023$ 指数范围: -1023~1024

计算

加法

  1. 指数小的数 将 指数与大的位数 对齐(指数对齐) -> 舍弃超出表示范围的位 -> ==这样保证小数位在最高位和次高位之间,且保持较高的精度==
  2. 有效小数位相加
  3. 移位到科学计数法表示(数字左规/右规)
  4. 检查指数位是否溢出
  5. 舍入到有效数位

==过程中小数可能由于移位导致丢失==

乘法

  1. 指数相加,或者==E值相加后减去偏置量==(底层是指数位相加减去偏置量)
  2. 有效小数位相乘
  3. 移位到科学表示,检查溢出
  4. 舍入
  5. 判断符号(整数运算符号位参与运算,浮点数符号位不参与)

舍入规则

都建立在==保留到第几位==,也就是保留几位小数的概念基础之上

向上舍入

不论小数部分为多少,向正无穷方向舍入

向下舍入

与向上舍入相反

向零舍入

正数向下,负数向上

向偶数舍入(默认的舍入方式)

为什么?

总是向一个方向舍入会导致数值偏大或偏小,造成统计学误差 而向偶数舍入保证在一半时间内偏大而另一半时间内偏小

具体内容?

向偶数舍入

==什么是中间值==

在需要保留到的小数位之后的一位是1,1后全为0 eg.保留到小数点后3位,则下面的为中间值 10.010 100 10.011 100 10.110 100 也就是说,对于一个小数XXXXX.YYYYYY100000…,最右边的Y是需要保留到的位数,只有这样的小数才是中间值

==具体内容==

若不是中间值,则向最近的数值舍入 若为中间值,则向偶数舍入

Why bias?

使用移码的原因

使指数位可以用无符号数解释 便于硬件进行指数位比较大小和计算等操作