——關于float(4字節)的取值范圍由來(-3.40E+38 ~ +3.40E+38)問題?
【float取值范圍計算】
S EEEEEEEE PPPPPPPPPPPPPPPPPPPPPPP
表示的范圍是:-(2^(2^(8-1)-1))*2~~~~(2^(2^(8-1)-1))*2?而(2^(2^(8-1)-1))*2化簡之后其實就是(2^(2^7))用計算器計算得到:3.402824e38.
1.關于2^(2^(8-1)-1): 其實就是 EEEEEEEE 部分?。ㄏ旅媸峭卣共糠?,你看了就知道)
?(1)浮點數使用 IEEE(電氣和電子工程師協會)格式。浮點類型的單精度值具有 4 個字節,包括一個符號位、一個 8 位 excess-127 二進制指數和一個 23 位尾數。
?(2)【8位excess-127 二進制指數——階碼位】
? ? ? ? ?1).Excess系統是計算機中可以同時存儲正數和負數的一種方法。在這個系統中,數很容易從十進制轉換成二進制,反之亦然。但是,在數上進行運算很復雜。現在對他僅有的應用,就是用來存儲小數的指數值。
? ? ? ? ?2).在Excess系統中,正數被稱為幻數用于數據轉換過程?;脭低ǔJ牵?^(n-1))或(2^(n-1)-1),這里,n是存儲單元的位數。
例如:excess-127就是表示存儲單元的位數n=8的情況下,而幻數為(2^(n-1)-1)!2的7次方減1得127!
? (3)利用上面的知識,可知 EEEEEEEE 表示的數值范圍為:2^(幻數),幻數=(2^(n-1)-1)因為是excess-127,儲存單元數為8!
? ? ? ? ? 即是2^(2^(8-1)-1)!
2.乘以2又是怎么回事?
? ? ? ? ? ?(2^(2^(8-1)-1))*2 是何原理機制,求指教,感謝!
2015-12-22
太深奧了