1.計算機中定點數的表示ui
表1 定點數的表示spa
|
+18table |
-18擴展 |
8位原碼方法 8位補碼im 16位原碼layout 16位補碼top |
00010010img 00010010計算機 0000000000010010 0000000000010010 |
10010010 11101110 1000000000010010 1111111111101110 |
計算機中定點數通常用補碼錶示,好處是能夠把減法變加法。對一個數的補碼取負數,只要對每一位(包括符號位)按位取反,並在末尾加1。作減法時,A-B=A+(B的負數)=A+(B按位取反加1)。加法和減法都會有溢出,判斷方法:若是A和B的最高位同樣,且結果的最高位與A和B的最高位不同,表示溢出。此外,還能夠用雙符號位,結果中兩位符號位不一樣表示溢出。因爲此方案須要額外佔用一位寄存器空間,所以計算機一般不採用。
2.計算機中的浮點數表示
定點數表示範圍有限,太大或過小的數都不能表示,精度也有限,用定點數作除法不精確,須要一種方法表示實數,計算機中叫作浮點數。如今計算機中一般使用IEEE 754標準。
浮點數有3部分組成:符號位、階碼和尾數。在32位浮點數中,符號位爲1位,表示正負,尾數32位,表示數值,階碼8位,表示乘以2的多少次方。其中,8位階碼錶示0~255的數,負階碼用階碼值減去偏移量127表示。浮點數的數值等於(尾數X2(階碼-偏移值))。
浮點數有單精度和雙精度之分,單精度是32位,雙精度是64位,還有擴展的單精度和雙精度,例如X86中採用80位表示擴展的雙精度,其它處理器採用64位。
特殊狀況:以單精度爲例,階碼e的值在0~255之間,其中0和255表示特殊的數,1~254表示正常的數。
(1)階碼範圍是0<e<255時表示規格化數
(2)階碼爲0時表示非規格化數或正負零。當階碼等於0時,若是f全等於0表示正0和負0,若是f不全等於0表示非規格化數.
(3)階碼爲255時表示無窮大或者非數。階碼等於255,尾數爲0,符號位0或1分別表示正無窮大或負無窮大。若是尾數不爲0表示非數。非數有兩個,Quiet NaN和Signaling NaN。Quiet NaN尾數的最高位等於0,運算結果仍是Quiet NaN。Signaling NaN的最高位等於1,若是參與運算將產生中斷。
注:(1)規格化是指經過移位將浮點數尾數最高位變爲1。非規格數用於填補最小數和0之間的空隙。
(2)IEEE754標準格式