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