浮點數加減運算左規右規

2021-10-23 19:38:22 字數 1488 閱讀 5586

當尾數用二進位制表示時,浮點規格化的定義是尾數m應滿足:                          

1/2   ≤  |m|<1

顯然對於正數而言,有m = 00.1φφ…φ;對於負數,其補碼形式為11.0φφ…φ(即-0.0*******,左歸)。這樣,當進行補碼浮點加減運算時,只要對運算結果的符號位和小數點後的第一位進行比較:如果它們不等,即為00.1φφ…φ或11.0φφ…φ,就是規格化的數;如果它們相等,即為00.0φφ…φ或11.1φφ…φ,就不是規格化的數,在這種情況下需要尾數左移以實現規格化的過程,叫做向左規格化。規則是:尾數左移1位,階碼減1。

在浮點加減運算時,尾數求和的結果也可以得到01.φφ…φ或10.φφ…φ,即兩符號位不相等,在這定點加減運算中稱為溢位,是不允許的。但在浮點運算中,它表明尾數求和結果的絕對值大於1,向左破壞了規格化。此時將尾數運算結果右移以實現規格化表示,稱為向右規格化,即尾數右移1位,階碼加1。

【例 】設x=2010×0.11011011,y=2100×(-0.10101100),求x+y。

[解:]

為了便於直觀理解,假設兩數均以補碼表示,階碼採用雙符號位,尾數採用單符號位,則它們的

浮點表示分別為

[x]浮=00 010,  0.11011011

[y]浮=00 100,  1.01010100

<1> 求階差並對階

△e=e

x-ey=[e

x]補+[-e

y]補=00 010+11 100=11 110

即△e為-2,x的階碼小,應使m

x右移兩位,e

x加2,

[x]浮=00 100,0.00110110(11)

其中(11)表示m

x右移2位後移出的最低兩位數。

<2> 尾數求和

0. 0 0 1 1 0 1 1 0 (11)

+ 1. 0 1 0 1 0 1 0 0     

1. 1 0 0 0 1 0 1 0 (11)

<3>規格化處理

尾數運算結果的符號位與最高數值位同值,應執行左規處理,結果為1.00010101(10),階碼為 00 011。

<4>捨入處理

採用0舍1入法處理,則有

1. 0 0 0 1 0 1 0 1

+          1

────────────────

1. 0 0 0 1 0 1 1 0

<5>判溢位

階碼符號位為00,不溢位,故得最終結果為

x+y=2011×(-0.11101010)

當尾數用二進位制表示時,浮點規格化的定義是尾數m應滿足:                          

浮點數的加減法運算

浮點數與定點數相比較有兩個比較明顯地特點 1 小數點位置不固定,但是在浮點數加減法運算的時候,小數點必須對齊 2 儲存器中儲存的不是浮點數的直接值,而儲存的是符號,尾數,移碼 階碼三種要素,所以不能直接相加減,實際上,針對浮點數的加減法運算,只需要對代表浮點數有效部分的尾數進行加減運算。所以,浮點數...

浮點數,ieee754標準 補碼規格化數,左規右規

零零散散的東西。浮點加法運算中,為什麼對階時,小階要向大階看齊,而不是大階向小階看齊?因為尾數左移會丟掉高位,右移會丟掉低位,丟掉低位損失的精度可以忽略不計,丟掉高位會損失很大精度。所以對階時,尾數右移,即尾數會減小,為了保持浮點數值不變,階碼要相應的增大。所以要小階向大階看齊,即大階不變,小階增大...

浮點數運算

浮點數運算的公式 n m re n代表浮點數 m代表尾數 r代表基數 e代表指數 所謂浮點數就是類似我們高中學的科學計數法 比如 1000 就表示為 1.0 103 那麼浮點型計算就是兩個用科學計數法表示的數之間進行的計算 例如 1.0 102 1.19 103 該如何計算 步驟 1.對階 所謂對階...