您的位置:首页 > 理论基础

浮点数的运算

2017-10-16 20:05 253 查看
规格化的浮点数因为存储是使用类似科学计数法的表示,因此计算方法大体上与科学计数法较为类似。

浮点加减法

浮点加减法的一般步骤(减法本质也是加法):

对于二进制形式的两个浮点数相加

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×2−1

−0.437510=−1.1102×22

阶码相加可得E=−3

尾数相乘可得1.1100002

不需要再进行规格化,截取4位1.110也无须舍入。

同时符号位为负,因此结果为−1.1102×2−3。

算术精确性

IEEE754标准保证在进行舍入之前,在右边总是多保留两位。分别称之为保护位(guard)和舍入位(round)。使用保护位和舍入位能够提供更精确的舍入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息