1. 程式人生 > 其它 >2022考研408-浮點數表示與運算

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

浮點運算

IEEE754浮點數

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

l 規格化數

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

l NaN(非數)

31 30 23 22 0

l 無窮大

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,最高有效位有效

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

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

l 加法

n 對階

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

n 尾數求和

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

n 規格化

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

n 溢位判斷

這裡的溢位判斷是指階碼有無溢位

習題

1、模擬(三)

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