浮點數加減運算過程:對階、尾數運算、規格化、舍入和判溢出

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

在這裏插入圖片描述

發佈了57 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章