我很想了解这些问题的答案:
使用IEEE-754 Single可以表示的最大非标准化数字是多少?
使用IEEE-754 Single可以表示的最大标准化数是多少?
答案 0 :(得分:1)
...了解这些问题的答案:
查看其位模式中的数字,并查看IEEE-754 Single及其8位偏置指数及其23位分数。
另外,用十六进制有效值和十进制幂指数来看它。在C中,这是通过printf("%a", x);
使用IEEE-754 Single可以表示的最大标准化数是多少?
v--------------------------------- Sign
v------v------------------------ 8 bit biased exponent - max value for finite numbers
v---------------------v Fraction part of 1.xxx...xxx significand - max value
0 11111110 11111111111111111111111
v------v-------- All 23 bits of the encoded significand and the implied 1.
v-v--- Maximum exponent for finite numbers.
0x1.fffffep+127
In decimal
printf("%.9e\n", pow(2,128) - pow(2,128-24));
3.402823466e+38 (approximate)
340282346638528859811704183484516925440 (exact)
使用IEEE-754 Single可以表示的最大非标准化数字是多少?
v--------------------------------- Sign
v------v------------------------ 8 bit minimum exponent - same as 1 - bias
v---------------------v Fraction part of 0.xxx...xxx significand - max value
0 00000000 11111111111111111111111
v------v-------- All 23 bits of the encoded significand and no implied 1.
v-v--- Maximum exponent for finite numbers.
0x1.fffffcp-127
In decimal
printf("%.9e\n", pow(2,-126) - pow(2,-126-23));
1.175494211e-38 (approximate)
(exact)
1.175494210692441075487029444849287348827052428745893333857174530571588870475618904265502351336181163787841796875e-38
注意:很少需要精确的十进制值。四舍五入到9个前导有效十进制数字的值足以区分所有可能的IEEE-754单个数字。