浮点数的运算

来源:互联网 发布:贝叶斯算法 spark 编辑:程序博客网 时间:2024/05/16 01:32

规格化的浮点数因为存储是使用类似科学计数法的表示,因此计算方法大体上与科学计数法较为类似。

浮点加减法

浮点加减法的一般步骤(减法本质也是加法):
对于二进制形式的两个浮点数相加
1. 对阶:对于两个规格化浮点数,将较小的指数的数向较大指数的数对齐。通过移动小数点实现。如果出现有效数字位数不能满足的情况,进行近似。
2. 相加尾数(有效数):将两个二进制数的尾数相加。
3. 规格化处理:对已经求得的结果进行规格化处理。即移动小数点位数,使之满足规格化的形式。
4. 按照有效数字位数进行舍入处理。
5. 判断是否出现溢出。
对于浮点数(1)s(1+M)×2e溢出有几种情况:
(1)阶码上溢:e>128,将其处理为正负无穷。
(2)阶码下溢:e<127,将其处理为0;
(3)尾数上溢:M>1,需要右移尾数1位且将e=e+1
(4)尾数下溢:尾数右移过程中,最低有效位超出表示的范围,需要进行舍入处理。

浮点乘法

浮点数的乘除法较为简单,只需要尾数相乘,阶码(指数)相加,然后进行规格化处理和舍入就可以了。
例如计算0.510×(0.437510),设有效位数为4(由0.4375决定)。
0.510=12×21
0.437510=1.1102×22
阶码相加可得E=3
尾数相乘可得1.1100002
不需要再进行规格化,截取4位1.110也无须舍入。
同时符号位为负,因此结果为1.1102×23

算术精确性

IEEE754标准保证在进行舍入之前,在右边总是多保留两位。分别称之为保护位(guard)和舍入位(round)。使用保护位和舍入位能够提供更精确的舍入。

原创粉丝点击