例如:兩浮點數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