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
規定:
- 尾數 M 的第一位總是 1(因為 1 <= M < 2),因此這個 1 可以省略不寫,它是個隱藏位,這樣單精度 23 位尾數可以表示了 24 位有效數字,雙精度 52 位尾數可以表示 53 位有效數字
- 指數 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)時,需要右規
這個圖上應該有點問題。