IEEE754單精度數(shù)的表示范圍
有同學(xué)問(wèn)單精度的數(shù)據(jù)表示范圍為什么是下面的范圍:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??

首先解釋上面是10進(jìn)制的科學(xué)計(jì)數(shù)法,E+38代表10^38,E-45代表10^-45。

計(jì)算機(jī)中浮點(diǎn)表示大都采用IEEE754標(biāo)準(zhǔn),其中單精度占4B(32位):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???1? ? ? ???8-bit? ??? ? ? ? ? ? ? ? ? ? ? ?23-bit

?數(shù)符S:0表示正數(shù),1表示負(fù)數(shù);
?階碼E:8位。采用偏置為127的移碼,
即:? ? ? ? ? ?階碼 = 127 + 階數(shù)數(shù)值
? ? ? ? ? ? 或???階數(shù)數(shù)值 = 階碼 - 127?
并規(guī)定階碼的取值范圍為:1~254,階碼值0和255用于表示特殊數(shù)值。所以階數(shù)的取值范圍:-126~127.
?尾數(shù)M:23位,采用原碼,采用規(guī)格化或非規(guī)格化表示。對(duì)于其中規(guī)格化數(shù)原碼來(lái)說(shuō),其尾數(shù)的最左邊一位必定為1(特殊值和非規(guī)格化數(shù)除外),所以可以把這個(gè)1丟掉,而把其后的23位放入尾數(shù)字段中。這樣,IEEE754中的23位尾數(shù)實(shí)際上是表示了24位的有效數(shù)字。
關(guān)于IEEE754標(biāo)準(zhǔn)更詳細(xì)的定義可查相關(guān)資料,這里不贅述了。
有了上面的解釋,我們算一下單精度的數(shù)據(jù)表示范圍:
1)最小正數(shù):
0?? 00000001 00000000000000000000001 (二進(jìn)制形式)
0.00000000000000000000001*2^-126 = 2^-23*2^-126
?????? (非規(guī)格化)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? =2^-149
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??≈?+1.40129846e-45
2)最大正數(shù):
0 11111110 11111111111111111111111 (二進(jìn)制形式)
1.1111111111111111111111*2^127 =( 1+2^-1+……2^-23 )*2^127
等比數(shù)列求和???? (規(guī)格化)? ? ? ? ?≈?1.99999988*1.701411834e+38
a1*(1-q^n)/1-q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?≈+3.402823465e+38
?3)最小負(fù)數(shù):
1 11111110 11111111111111111111111? (二進(jìn)制形式)
-1. 11111111111111111111111*2^127 =-( 1+2^-1+……2^-23 )*2^127
? ? ? ? ? ? ? ?(規(guī)格化)? ? ? ? ? ? ? ? ? ? ? ? ≈1.99999988*1.701411834e+38
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ≈-3.402823465e+38
?4)最大負(fù)數(shù):
1 00000001 00000000000000000000001?? (二進(jìn)制形式)
-0.00000000000000000000001*2^-126 = -2^-23*2^-126
? ? ? ? ? ? ??(非規(guī)格化)? ? ? ? ? ? ? ? ? ? ? ? ? ? =-2^-149
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??≈ -1.40129846e-45?
通過(guò)上面具體計(jì)算,能看到浮點(diǎn)表示數(shù)據(jù)存在溢出問(wèn)題:
