2022考研408-浮點數表示與運算


浮點運算

IEEE754浮點數

這里主要介紹單精度浮點數float,共32位,分為3部分:1位數符、8位階碼、23位尾數,尾數有隱含1.階碼為8位,表示規格化數時范圍是1到254之間,偏置取127,這樣階碼范圍就為-126到127之間,階碼全0表示非規格化數,階碼全1尾數全0表示無窮大,數符為0表示正無窮,為1則為負無窮,階碼全1而尾數非0時則為NaN非數,可以總結如下:

規格化數

31  30                          23  22                                                                                              0

 

 

例如,表示-9.625,先求二進制表示 -9.625 = -1001.101,再移位-9.625=-1.001101 * 2 ^3,尾數001 1010 0000 0000 0000 0000,階碼3+127=130=1000 0010,數符1,合起來就是

1100 0001 0001 1010 0000 0000 0000 0000

寫成16進制就為 C11A0000H,若采用小端方式存儲在主存中,則該float數存儲單元的內容依次為 00H 00H 1AH C1H

NaN(非數)

31  30                          23  22                                                                                               0

 

 

 

 

無窮大

31  30                          23  22                                                                                             0

 

 

無窮用於表達計算中產生的上溢問題。比如兩個極大的數相乘時,盡管兩個操作數本身可以保存為浮點數,但其結果可能大到無法保存為浮點數,必須進行舍入操作。根據IEEE標准,此時不能將結果舍入為可以保存的最大浮點數(因為這個數可能與實際的結果相差太遠而毫無意義),而應將其舍入為無窮。對於結果為負數的情況也是如此,只不過此時會舍入為負無窮,也就是說符號域為1的無窮。

 

非規格化數

31  30                          23  22                                                                                             0

 

在這種情況下,指數值 E=1-Bias(單精度下即為1-127=-126),而有效數字的值 M=f,也就是說它是小數段的值,不包含隱含的開頭的 1。

 

 

浮點數的舍入與舍入誤差

在浮點數的舍入問題上,IEEE 浮點格式定義了 4 種不同的舍入方式。其中,默認的舍入方法是向偶數舍入,而其他三種可用於計算上界和下界。

    下表是 4 種舍入方式的應用舉例。這里需要特別說明的是,向偶數舍入(向最接近的值舍入)方式會試圖找到一個最接近的匹配值。因此,它將 1.4 舍入成 1,將 1.6 舍入成 2,而將 1.5 和 2.5 都舍入成 2。

 

 

 

浮點數的運算

l  規格化

n  規格化數:以補碼為例,正數時為0.1xxx,負數時為1.0xxxx,最高有效位有效

左規:處理非規格化數,尾數每左移一位,階碼相應的減一,可能多次

右規:處理溢出,尾數右移一位,階碼加1

l  加法

n  對階

小階向大階看齊,也即較小的浮點數,其階碼每加一,尾數就右移一位,此時尾數可能會舍入;

n  尾數求和

當參與相加的兩個浮點數階碼經過對階后,就可以進行尾數求和了;

n  規格化

尾數可能溢出,此時需要右規,相應的階碼加一,同樣這里可能產生精度損失

n  溢出判斷

這里的溢出判斷是指階碼有無溢出

 

習題

1、模擬(三)

 

 

 2和3正確,其它錯誤,選B

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM