32 位標準:1 位用于數(shù)字的正/負值。8 位用于指數(shù),24 位用于尾數(shù)。指數(shù)為 8 位,即 1 * 2^7 + 1 * 2^6 + ... = 255 當最大指數(shù)為 127 時,最小指數(shù)應為 -128,因此 126 + 128 = 255。但為什么 Java 說最小指數(shù)是 -126 呢?255 - (127+126)= 2,所以有兩個數(shù)字我們沒有使用。
2 回答

繁花不似錦
TA貢獻1851條經(jīng)驗 獲得超4個贊
這個數(shù)字有一個“偏差”,那些位里有什么?首先0x7F
從中減去以獲得您的值。使用 value 0x01
:可以達到最低指數(shù)0x01 - 0x7F = 1 - 127 = -126
。值達到最高值0xFE
:0xFE - 0x7F = 254 - 127 = 127
。
0x00
但是,指數(shù)值和發(fā)生了什么0xFF
?這就是為什么有 254 個而不是 256 個唯一指數(shù)可用:這兩個是特殊的魔法,通常不可用。指數(shù) 0 既用于編碼 0(如果分數(shù)的數(shù)字也是 0),也用于編碼所謂的次正規(guī)數(shù),即非常接近 0 的數(shù)字。
0xFF
用于特殊值;這就是浮點數(shù)存儲NaN
無窮大的方式。

拉風的咖菲貓
TA貢獻1995條經(jīng)驗 獲得超2個贊
有 2 個指數(shù)序列編碼特殊值。全 0 編碼 0 或次正規(guī)值,具體取決于尾數(shù)。全 1 編碼 Infinity 或 NaN。這意味著,正如您所說,有 254 個序列來編碼普通數(shù)字,而不是 256 個指數(shù)序列。
因此,指數(shù) 00000001 編碼 -126 次方,11111110 編碼 127 次方是有意義的。這是正常數(shù)的指數(shù)范圍。
添加回答
舉報
0/150
提交
取消