浮點加減運算中關於結果規格化的思考

2021-10-12 16:29:17 字數 863 閱讀 9601

對於兩個浮點數x和y滿足:

完成x與y的加減法有四個步驟:

0運算元檢查。即檢查是否有乙個運算元為0,是的話直接得到結果,一般在計算機中不進行這一步。比較階碼大小並完成對階。要讓兩個浮點數的尾數能夠直接相加減,它們的階碼也就是mx和

my

m_和m_

mx​和my

​必須相同,因此必須完成對階,一般是讓小階向大階看齊。

尾數進行加減運算。方法與定點加減運算完全一致,沒有什麼好說的。

結果規格化。這一步是重點,也是難點。

要想知道怎麼規格化,肯定得知道什麼才是規範的表達方式。浮點數都是近似表示的,精度由尾數決定,數的表示範圍大小由r、e決定。為了提高精度需要使尾數的有效位數盡可能佔滿可用的位數。這種措施稱為浮點數的規格化。規格化要求尾數:

1/r<=|m|<1

計算機中r = 2,因此實際上我們計算出來得到的尾數必須屬於[0.5, 1)。

在浮點數加減運算時,我們採用雙符號位,因此,當計算結果為01.***x或者10.***x時,表示結果溢位,已經大於1了,因此需要規格化。

下面舉個具體的例子:

m =2

2x

0.11011011,n

=24x

(−

0.10101100

)m = 2^x0.11011011,n = 2^x(-0.10101100)

m=22x0

.110

1101

1,n=

24x(

−0.1

0101

100)

,求m+n。

逐步分析:

浮點數運算的的規格化

在尾數用補碼表示時,規格化浮點數應滿足尾數最高數字與符號位不同,如相同就是不滿足規格化。尾數用雙符號位補碼表示,經過加 減運算之後,可能出現以下六種情況,即 00.1 x x x 11.0 x x x 00.0 x x x 11.1 x x x 01.x x x x 10.x x x x 第 種情況...

浮點數的表示 基本格式 規格化 表示範圍

浮點數表示法是指以適當的形式將比例因子表示在資料中,讓小數點的位置根據需要而浮動。這樣,在位數有限的情況下,既擴大了數的表示範圍,又保持了數的有效精度。階碼 階碼是整數,階符和 m 位階碼的數值部分共同反映浮點數的表示範圍及小數點的實際位置,常用移碼或補碼表示。ieee754標準中採用移碼的表示形式...

GCC中關於浮點運算的問題

最近讀書 深入理解計算機系統 裡第二章中的 intel ia32 浮點運算 發現其中給出的測試程式有些問題 浮點數暫存器使用的是80位的擴充套件精度格式 float 型別使用的是32位精度格式 double 型別使用的是64位精度格式 書中給出的例子是 includedouble recip int...