例如:两浮点数x=0.1101*201,y=(-0.1010)*211,求x+y
一、 对阶
1、求补码
[x]补=00,01;00.1101,[y]补=00,11;11.0110;
2、求阶差
小阶向大阶对阶,同时尾数右移,移动位数为阶差。
00.11-00.01=00.10=2,故阶差为2,故[x]’补=00,11;00.0011
二、尾数求和
将对阶后的两个尾数安定点加减运算规则进行运算。
上述对阶后得:[x]’补=00,11;00.0011;[y]补=00,11;11.0110;
则[Sx+Sy]补=00.0011+11.0110=11.1001。故[x+y]补=00,11;11.1001。
三、规格化:
(1) 左规
尾数出现00.0xx…x或11.1xx…x时需要进行左规,左规时尾数右移一位,阶码减一,直到成为:00.1xx…x或11.0xx…x。一句话就是尾数第一位和符号位相同。
如上例求和结果为:
[x+y]补=00,11;11.1001;
故将其尾数左移一位,阶码减1得:
00,10;11.0010;
规格化后这是补码,求其尾数的原码即可,故结果为
x+y=(-0.1110)*2+10
(2) 右规
当尾数出现01.xx…x或10.xx…x时表示尾数溢出,需要进行右归,右归时尾数右移,阶码加1.
例:已知浮点数x=0.1101x210,y=0.1011x201,求x+y
- 1、对阶
- 2、尾数求和
- 3、尾数求和
- 求和结果为 [x+y]补=00,10;01.0010;
故需要进行右规,尾数向右移动一位,阶码加1得:[x+y]补=00,11;00.1001;则x+y=0.1001x211
四、舍入
(1)"0舍1入"法
"0舍1入"法类似与十进制的四舍五入法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位位1,则在尾数的末位加1,这样做可能使得尾数又溢出,此时需再做一次右规。
(2)"恒置1"法
尾数右移是不论丢掉得最高数值位是1或0,都使右移后得尾数末尾位恒置1。
例:设x=x-101x(-0.101000),y=2-100x(+0.111011),并假设阶符取2位,阶码得数值部分取3位,数符取2位,尾数得数值部分取6位,求x-y;
解: 由题可得:[x]补=11,011;11.011000,[y]补=11,100;00.111011;
- 1、对阶
- 11,100-11,011=00.001=1。故x得尾数右移1位,阶码加1,即
- [x]补=11,100;11.101100
- 2、求和
- [Sx]补- [Sy]补= [Sx]补+ [-Sy]补=11.101100+11.000101=10.110001
注意:Sy=>-Sy;连同符号位取反,末尾加1。
- 尾数符合位出现10,需要右规
- 3、规格化
- 尾数右移,阶码加1,右规后得[x-y]补=11,101;11.011000 1
- 4、舍入处理
- 采用0舍1入法,其尾数右规时末位丢1,再+1,得:[x-y]补=11,101;11.011001