计算机中浮点数加法运算

十进制浮点数加法

首先以手工过程将科学计数法表示的两个十进制数相加:

9.999*10^1 + 1.610 * 10^-1。假设有效位只有4个十进制,且指数为两个十进制数位。

步骤1:为了能让两数相加,我们需对指数较小的小数点进行调整,使1.610 * 10^-1的指数项较大的指数对齐。

1.610 * 10^-1   =  0.1610 * 10^0 = 0.01610 * 10^1

最后边的形式是我们需要的。因为其指数和较大的数9.999*10^1的指数相同。因此,第一步要将较小数的有效位右移,直到其指数和较大数的指数相同。由于我们只能表示4位十进制,故移位后得到的数为

0.016 * 10^1

步骤2:将有效位相加

 9.999
+0.016
——————
10.015

和为10.015*10^1

步骤3:因为和不是规格化的科学记数法表示,因此需要调整:

10.015*10^1 = 1.0015*10^2

因此,在加法后可能需要对和进行移位,使其变为规格化形式,同时相应地调整指数。这个例子中是右移,但如果一个数为正,一个数为负数,则和可能会有许多前导0,从而需要左移。无论指数是增加还是减少,都需要检查上溢或者下溢,必须保证指数能够被固定位数的指数字段所表示。

步骤4:因为我们假设有效位只有4位十进制(不包括符号位),所以需要对结果进行舍入。如:

1.0015*10^2

舍入为4位的十进制数

1.002*10^2

因为小数点后边第4位的数在5和9之间。注意,如果舍入有误,如将1加到了一串9上,则和不能再被规格化,需要再次执行步骤3。

总结:

二进制浮点数加法

尝试将0.5(十进制)和-0.4375(十进制)用二进制相加

首先,看一下这两个数用规格化科学计数法表示的二进制形式,假设保持4位精度:

 

0.5(十进制) = 1/2  十进制      = 1/(2^1) 十进制    = 0.1 二进制        =0.1 * 2^0 二进制     = 1.000 * 2^-1 二进制
-0.4375(十进制) = -7/16 十进制   = -7/(2^4) 十进制  = -0.0111 二进制  = -0.011*2^0 二进制   = -1.110*2^-2 二进制

步骤1:指数较小的数(-1.11*2^-2  二进制)的有效右移,直到其指数和较大数的指数相匹配:

-1.110* 2^-2 = -0.111*2^-1

步骤2:将有效位相加

-1.110 * 2^-1   +  (-0.111* 2^-1) = 0.001 * 2^-1  二进制

步骤3:将和规格化,并检查上溢和下溢:

0.001 * 2^-1 = 0.010 * 2^-2 = 0.100 * 2^-3 = 1.000*2^-4

127≥-4≥-126 ,没有上溢和下溢。(带偏差的指数为-4+127,即123,其在最小的指数1和最大的指数254之间(未保留的带偏差的指数)。)

步骤4:舍入和:

1.000 * 2^-4 二进制

这个和正好用4位表示,故不需要再舍入,然后

1.000*2^-4 = 0.0001000=0.0001 二进制
=1/(2^4) = 1/16 = 0.0625 十进制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byd yes

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值