版權聲明: 未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!
1 整數
整數在計算機中使用補碼錶示。
補碼:正數的補碼=原碼;負數的補碼=反碼+1,如
- [+1]補 = 0000 0001
- [- 1]補 = 1111 1111
補碼的作用:
- 一是爲了將減法轉爲加法,[A-B]補=[A]補+[-B]補碼,
- 二是統一+0和-0。[+0]補=[-0]補
補碼轉爲原碼
- 原碼=補碼的補碼
- 原碼= 補碼-1的反碼
原碼:原碼就是直接將數轉爲二進制,對於有符號的數來說,用第一位表示符號,1表示負數,0表示正數。 >其餘位表示值。如:
[+1]原 = 0000 0001
[- 1]原 = 1000 0001反碼:正數的反碼=原碼;負數的反碼:符號位不變,其他位按位取反。如:
[+1]反 = 0000 0001
[- 1]反 = 1111 1110
2 浮點數
2.1 IEEE規定浮點數在計算機中的表示方法
浮點數在計算機中不是以二進制原碼來表示,而是用二進制科學計數法表示
- 將十進制浮點數轉爲二進制浮點數
將二進制浮點數用規範的二進制科學計數法表示爲:
- ±叫做符號位,放在左邊第一位。
- bbb…叫做尾數,放在尾數域中,由於規範的二進制科學計數法的第一位都是1,所以省略
- float(4B)中尾數域爲佔23尾,精度爲24位
- double(8B)中尾數域佔52尾,精度爲53位
- i叫做實際指數,由於指數有正有負,而負數的補碼與原碼不同,爲了解決這個問題,給實際指數i加上一個偏差後放在指數域中
- 對於單精度float類型,指數域有8位,可以表示0~255,實際值爲-127~128,其中0和255用於保存特殊值,偏差爲127。
- 對於雙精度double類型,指數域有11位,可以表示0~2047,實際值爲-1023~1024,其中0和2047用於保存特殊值,偏差爲1023。
符號域、指數域、尾數域的佔位情況
- 對於float類型的數據,其在內存中的表示爲:
- 對於double類型,其表示形式如下:
IEEE特殊值規定
- NaN錯誤
- 實數範圍內發生對負數開平方時產生此錯誤
- 指數域全爲1,尾數域不全爲0,表示該錯誤
- 正負無窮大
- 兩個大數相乘產生的上溢,IEEE規定此時不是將結果舍入爲可以保存的最大的浮點數(因爲這個數可能離實際的結果相差太遠而毫無意義),而是將其舍入爲無窮。
- 指數域全1,尾數域全0,表示該值
- 正負0
- IEEE 標準的浮點數格式中,小數點左側的1是隱藏的,而零顯然需要尾數必須是零。因此零也就無法直接用這種格式表達而只能特殊處理
- 指數域全0,尾數域全0,表示該值
- 非規範化浮點數:
- 兩個極小數相減的差可能會下溢
- 指數域全0,尾數域不全0,表示此時採用非規範浮點數,非規範浮點數的指數偏差比規範浮點數大1。
- NaN錯誤
2.2 計算機中表示的浮點數轉爲十進制
示列:
版權聲明: 未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!