計算機中的整數與浮點數

  版權聲明 未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


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規定浮點數在計算機中的表示方法

浮點數在計算機中不是以二進制原碼來表示,而是用二進制科學計數法表示

  • 將十進制浮點數轉爲二進制浮點數
  • 將二進制浮點數用規範的二進制科學計數法表示爲:±1.bbbb...2i

    • ±叫做符號位,放在左邊第一位。
    • 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類型的數據,其在內存中的表示爲:float
    • 對於double類型,其表示形式如下:double
  • IEEE特殊值規定

    • NaN錯誤
      • 實數範圍內發生對負數開平方時產生此錯誤
      • 指數域全爲1,尾數域不全爲0,表示該錯誤
    • 正負無窮大
      • 兩個大數相乘產生的上溢,IEEE規定此時不是將結果舍入爲可以保存的最大的浮點數(因爲這個數可能離實際的結果相差太遠而毫無意義),而是將其舍入爲無窮。
      • 指數域全1,尾數域全0,表示該值
    • 正負0
      • IEEE 標準的浮點數格式中,小數點左側的1是隱藏的,而零顯然需要尾數必須是零。因此零也就無法直接用這種格式表達而只能特殊處理
      • 指數域全0,尾數域全0,表示該值
    • 非規範化浮點數:±0.bbbb...2i
      • 兩個極小數相減的差可能會下溢
      • 指數域全0,尾數域不全0,表示此時採用非規範浮點數,非規範浮點數的指數偏差比規範浮點數大1

2.2 計算機中表示的浮點數轉爲十進制

=(1)(1+i=1(bi2i))2

示列:
zhuan

13.5=(1)1(1+i=123(b23i2i))2130127

  版權聲明 未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


發佈了84 篇原創文章 · 獲贊 63 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章