其他分享
首页 > 其他分享> > CSAPP:浮点数

CSAPP:浮点数

作者:互联网

二进制小数:小数点右边的部分表示2的负幂。

形如0.111111111111…1(2)的数表示的是刚好小于1的数,我们将用简单的1.0-ε来表示。很多十进制的小数不能准确的用二进制小数来表示。

IEEE浮点格式:用 V=(-1)^s*M*2^E 的形式来表示一个数。

在单精度浮点中,s=1,k=8,n=23,得到一个32位的表示;在双精度浮点中,s=1,k=11,n=52,得到一个64位的表示。

情况1:规格化的值

当exp的位模式不全为0且不全为1时,属于此情况。

此时,阶码exp字段被解释为以偏置形式表示的有符号整数。也即,直接解码的值为e,满足实际幂次E=e-bias。其中偏置bias=2^(k-1)-1,效果是使最小的幂次编码为000…001,而最大的编码为11111…110,进而可以按照无符号数的方法直接进行比较。

小数字段frac被解释为描述小数值f,即 0<f<1 ,尾数定义为M=f+1。(这样可以多一个精度位)

规格化的值能表示的最小绝对值为最小frac和最小exp

情况2:非规格化的值

当阶码域全为0时,属于此情况。

可以用于表示特别接近于0的数。(规格化的值M必须大于1,无法表示0)

在此情况,尾数M=f,不包含小数点前的1,阶码值是1-bias(为了和规格化的最小值无缝对接)

情况3:特殊值

阶码全为1,当小数域全为0时,得到的值是无穷,正负由符号位决定。当小数位不全为0时,结果值为NaN。

这些处理使得浮点数可以使用整数排序函数来排序。

舍入:向上,向下,向0,向偶数(IEEE浮点数采用)

向偶数舍入可以防止出现统计偏差。

最低有效位+中间值判定。偏离中间值的数舍入最近的偶数,中间值应倾向于使最低有效位为偶数。

浮点运算:加法具有交换律,但不具有结合律。乘法具有交换律,不具有结合律和分配律。加法和乘法都具有单调性(由于对溢出处理的不同)

标签:表示,阶码,CSAPP,规格化,浮点数,偶数,exp,小数
来源: https://www.cnblogs.com/Philematology/p/15331790.html