1. 程式人生 > >關於IEEE754浮點數階碼

關於IEEE754浮點數階碼

問題:

1、為什麼和定點數的移碼偏置值不同,定點數是2^n,浮點數是2^n-1
2、而且為什麼範圍是1~254(8位),按理說不應該是0~255嗎?

回答:

IEEE754浮點數表示方法:(-1)^s * 1.M * 2^(E-127)

對於階碼為0或255的情況,IEEE754標準有特別的規定:

如果 E 是0 並且 M 是0,則這個數的真值為±0(正負號和數符位有關) 如果 E = 255 並且 M 是0,則這個數的真值為±∞(同樣和符號位有關) 如果 E = 255 並且 M 不是0,則這不是一個數(NaN)。 短浮點數和長浮點數(不含臨時浮點數)的儲存在尾數中隱含儲存著一個1 因此在計算尾數的真值時比一般形式要多一個整數1。 對於階碼E的儲存形式因為是127的偏移,所以在計算其移碼時與人們熟悉的128偏移不一樣, 正數的值比用128偏移求得的少1,負數的值多1,為避免計算錯誤,方便理解,常將E當成二進位制真值進行儲存。 例如:將數值-0.5按IEEE754單精度格式儲存, 先將-0.5換成二進位制並寫成標準形式:-0.5(10進位制)=-0.1(2進位制)=-1.0×2-1(2進位制,-1是指數), 這裡s=1,M為全0,E-127=-1,E=126(10進位制)=01111110(2進位制),則儲存形式為: 1 01111110 000000000000000000000000(2進位制)=BF000000(16進位制) 這裡不同的下標代表不同的進位制。