float類型數字在計算機中用4個字節存儲。遵循IEEE-754格式標准:
一個浮點數有3部分組成:
符號部分,0 表示正,1表示負。
底數部分 使用二進制數來表示此浮點數的實際值,底數部分實際是占用24bit的一個值,但是最高位始終為1,所以,最高位省去不存儲,在存儲中占23bit科學計數法。
指數部分 占用8bit的二進制數,可表示數值范圍為0-255。
但是指數可正可負,所以,IEEE規定,此處算出的次方必須減去127才是真正的指數。所以,float類型的指數可從-126到128。
所以格式為:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
- S表示浮點數正負
- E指數加上127后的值得二進制數據
- M底數
舉例:
17.625在內存中的存儲
首先要把17.625換算成二進制:10001.101。
整數部分,除以2,直到商為0,余數反轉。
小數部分,乘以2,直到乘位0,進位順序取。
將10001.101右移,直到小數點前只剩1位:1.0001101 * 2^4 因為右移動了四位。
底數:因為小數點前必為1,所以IEEE規定只記錄小數點后的就好。所以,此處的底數為:0001101。
指數:實際為4,必須加上127(轉出的時候,減去127),所以為131。也就是10000011。
符號部分是正數,所以是0。
綜上所述,17.625在內存中的存儲格式是:
01000001 10001101 00000000 00000000