首页 理论教育 浮点加减法运算规则、步骤及结果

浮点加减法运算规则、步骤及结果

时间:2023-10-31 理论教育 版权反馈
【摘要】:两个浮点数进行加、减的运算规则是:首先要看两数的阶码是否相同,即小数点位置是否对齐。总之完成浮点加法和减法运算,需要进行对阶、求和(差)、规格化和舍入等步骤。只要尾数左移一位,阶码减1,得规格化结果是[x+y]补=0010 11 0010在浮点加、减运算时,尾数求和的结果也可能得到01φ…φ,即两符号位不相等,这在定点加、减运算中称为溢出,是不允许的。

浮点加减法运算规则、步骤及结果

两个浮点数进行加、减的运算规则是:首先要看两数的阶码是否相同,即小数点位置是否对齐。若两数的阶码相等,表示小数点是对齐的,就可进行尾数的加、减;反之,若两数阶码不等,表示小数点位置没有对齐,要通过对阶使两数的阶码相等。对阶完后才能做尾数的加、减。运算结果可能不是规格化的数,为了保证运算精度,需要对运算结果进行规格化。而在对阶和规格化的过程中可能有数码丢掉,为了减少误差,还需要进行舍入。总之完成浮点加法和减法运算,需要进行对阶、求和(差)、规格化和舍入等步骤。

1.对阶

要对阶使两数的阶码相等,首先应求出两数阶码ex和ey之差,即Δe=ex-ey。当Δe≠0时,要通过尾数的移位来改变ex或ey,使它们相等。原则上,既可以通过Sx移位以改变ex来达到ex=ey,也可以通过Sy移位以改变ey来使ex=ey。但是,由于浮点表示的数是规格化的,尾数左移会引起最高有效位的丢失,造成很大误差。而尾数右移虽然引起最低有效位的丢失,但造成的误差较小。因此,对阶操作规定使尾数右移,尾数右移后使阶码相应增加,其数值保持不变。很显然,一个增加后的阶码与另一个阶码相等,所增加的阶码一定是小阶。因此在对阶时,总是使小阶向大阶对齐,即小阶的尾数向右移位(相当于小数点左移)。每右移一位,其阶码加1,直到两数的阶码相等为止,右移的位数等于阶差Δe。

例2-20:两浮点数x=201×0.1101,y=211×(-0.1010),求x+y=?

解:假设两数在计算机中的表示规则为:阶码(4位,前4位,补码表示),尾数(6位,双符号位补码表示),则x和y表示成

x→0001 00 1101

y→0011 11 0110

要进行加法运算,必须先对阶,故先求阶差[Δe]=[ex]+[-ey]=0001+1101=1110,即Δe=-2,表示ex比ey小2,因此将x的尾数右移二位:右移一位,得[x]=0010 00 0110,再移一位,得[x]=0011 00 0011,至此。两数的阶差Δe=0,表示对阶完毕。

2.尾数求和

例2-20中,对阶完毕后可得

[x]=0011 00 0011

[y]=0011 11 0110(www.xing528.com)

对尾数求和即得[x+y]=0011 11 1001。

3.规格化

求和之后得到的数可能不是规格化数,为了增加有效数字的位数,提高运算精度,必须将求和的结果规格化。

例2-21:对例2-20中的求和结果规格化。

解:在例2-20中,尾数求和的结果是

[x+y]=0011 11 1001

由于符号位和第一位数相等,不是规格化数,需要规格化,称为向左规格化。只要尾数左移一位,阶码减1,得规格化结果是

[x+y]=0010 11 0010

在浮点加、减运算时,尾数求和的结果也可能得到01φ…φ或10φ…φ,即两符号位不相等,这在定点加、减运算中称为溢出,是不允许的。但在浮点运算中,它表明尾数求和结果的绝对值大于1,此时,将尾数右移一位,阶码加1即可,称为向右规格化。

4.舍入

在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定误差,故应进行舍入处理。常用的舍入方法有两种:一种是“0舍入”法,即如果右移时被丢掉数位的最高位为0则舍去,反之则将尾数的末位加1。另一种是“恒置1”法,即只要有数位被移掉就在尾数的末位恒置1。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈