計算機數的表示方法(定點表示,浮點表示和規格化)


1.定點表示

鏈接:計算機系統基礎(三)定點數 | Kaito's Blog (kaito-kidd.com)

純整數:例如整數100,小數點其實在最后一位,所以忽略不寫

純小數:例如:0.123,小數點固定在最高位

整數+小數:例如1.24、10.34,小數點在指定某個位置

定點數指小數點在數中位置固定不變的數。定點數分為定點整數和定點小數,由於小數點位置固定不變,所以存儲時小數點不進行存儲,按照約定的位置計算數值。原理上講,小數點的位置可以位於任何位置,但通常將定點數表示成純小數或純整數。

缺點:當機器數的字長一定的時候,數的范圍和精度不能同時保證

 

2.浮點表示 &&IEEE754浮點數標准

鏈接:計算機系統基礎(四)浮點數 | Kaito's Blog (kaito-kidd.com)

原理:利用科學計數法實現小數點不固定

V = (-1)^S *M *R^E

  • S:符號位,取值 0 或 1,決定一個數字的符號,0 表示正,1 表示負
  • M:尾數,用小數表示,例如前面所看到的 8.345 * 10^0,8.345 就是尾數
  • R:基數,表示十進制數 R 就是 10,表示二進制數 R 就是 2
  • E:指數(階碼),用整數表示,例如前面看到的 10^-1,-1 即是指數(會加上一個偏置常數)

 

 

IEEE754浮點數

  • 單精度浮點數 float:32 位,符號位 S 占 1 bit,指數 E 占 8 bit,尾數 M 占 23 bit
  • 雙精度浮點數 float:64 位,符號位 S 占 1 bit,指數 E 占 11 bit,尾數 M 占 52 bit

規定:

  1. 尾數 M 的第一位總是 1(因為 1 <= M < 2),因此這個 1 可以省略不寫,它是個隱藏位,這樣單精度 23 位尾數可以表示了 24 位有效數字,雙精度 52 位尾數可以表示 53 位有效數字
  2. 指數 E 是個無符號整數,表示 float 時,一共占 8 bit,所以它的取值范圍為 0 ~ 255。但因為指數可以是負的,所以規定在存入 E 時在它原本的值加上一個中間數 127,這樣 E 的取值范圍為 -127 ~ 128。表示 double 時,一共占 11 bit,存入 E 時加上中間數 1023,這樣取值范圍為 -1023 ~ 1024。

 

規格化數:

補碼的規格化形式意思是先將原碼規格化,再轉化成補碼

 

 

 

 

 

 

規格化數的標准是真值的尾數部分最高位具有非零數字(相當於利用科學計數法的原則調整階碼和尾數)。在IEEE754中,這里規定尾數最高位在小數點前且為1,並且該位為隱藏位

 

浮點數的表示精度和表示范圍:

鏈接:IEEE754 32位浮點數表示范圍 - TQCAI - 博客園 (cnblogs.com)

單精度浮點數 float:

最大 0,11111111 ,111111……(23個1)        1,11111111 ,111111……(23個1)

表示范圍:它能表示的最大二進制數為 +1.1.11111…1 * 2^127(小數點后23個1),而二進制 1.11111…1 ≈ 2,所以 float 能表示的最大數為  2^128 = 3.4 * 10^38,即 float 的表示范圍為:-3.4 * 10^38 ~ 3.4 * 10 ^38。

表示精度:表示的最小二進制數為 0.0000….1(小數點后22個0,1個1),用十進制數表示就是 1/2^23。

最小0,00000000,000(22個0)1      這個時候使用的是非規格化數表示

 

 

規格化操作:


左規:尾數左移一位,階碼-1,指導數符和第一位數位不同為止????

右規:當尾數溢出(>1)時,需要右規

 

 

這個圖上應該有點問題。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM