float 在記憶體中長度是32
double在記憶體中長度是64位(64位編譯器)
總結實數轉二進位制float的方法:
a. 分別將實數的整數和小數轉換為二進位制
b. 左移或者右移小數點到第乙個有效數字之後
c. 從小數點後第一位開始數出23位填充到尾數部分
d. 把小數點移動的位數,左移為正,右移為負,加上偏移量127,將所得的和轉換為二進位制填充到指數部分
e. 根據實數的正負來填充符號位,0為正,1為負
float的精度:
取值範圍看指數部分:
float是有符號型,其中,8位指數字,2^8=(-128—127),因此實際的範圍是-2^128—2^127,約為-3.4e38—3.4e38
同理double範圍約是-1.7e308—1.7e308,
精度是看尾數部分:
float尾數字23位,2^23=8.3e6,7位,所以不同的編譯器規定不同,有些是7位,有些8位
double尾數52位,2^52=4.5e15,15位,所以double的有效位數是15位
參考鏈結
二進位制float轉實數
浮點數在記憶體中的儲存
浮點數在記憶體中的儲存方式與整型數字是不同的,對浮點數的儲存實際上是對ieee754中規定的s m e的儲存。浮點數 float double long double 根據國際標準ieee754,任意乙個二進位制浮點數可以被表示成下面的形式 ieee754規定 對於32位的浮點數,最高的1個位元位為...
浮點數在記憶體中的儲存
浮點數在記憶體中的儲存 常見浮點數型別 float,double,long double.那麼浮點數在記憶體中又是如何儲存的呢,它會和整數一樣嗎?那它的小數點又是如何儲存的呢 int main 執行結果為 n和 pfloat在記憶體中明明是同一位置同一數字,為什麼浮點數和整數的讀取結果會不一樣.說明...
浮點數在記憶體中的儲存
整數在計算機記憶體儲存以二進位制儲存很容易理解,那浮點數怎麼儲存的呢?其實之所以想到要一 竟是因為類似下面這段 include intmain void 由於大意,用轉義字元 d來列印浮點數,結果顯示 為什麼是 461808600呢?我也很奇怪,然後就開始研究研究吧。當然這個也和編譯器有關,有些就會...