如何计算float的取值范围(32位机)

http://en.wikipedia.org/wiki/IEEE_754-1985

在32位机上,float占4个字节。
signal     exponent     fraction
0           00000000     00000000 00000000 0000000
signal : 正负 1位
exponent : 指数 8位
fraction : 小数  23 位

1 01111100 01000000 00000000 0000000
- 1.01X 2(011111002- 011111112)    == -1.01 X 2-3  == -(2-3 + 2-5)  == -(1/8 + 1/32) == -0.15625

16进制写法:
float f = -0x1.400000p-3f;           //.400000 是为了完整的表示 小数部分的23位,后面的0可以省略

负无穷: 1 11111111 00000000 00000000 0000000
负零   : 1 00000000 00000000 00000000 0000000
正零   : 0 00000000 00000000 00000000 0000000
正无穷: 0 11111111 00000000 00000000 0000000
NaN    : * 11111111 (23位小数部分不全为0)

负最小值: 1 11111110 11111111 11111111 1111111     // -0x1.fffffep127f  = -3.4 X 1038   约等于 - 2128
如何计算float的取值范围(32位机)
 负最大值: 1 00000001 11111111 11111111 1111111     // -0x1.0p-126f   -1.18 X 10-38
 如何计算float的取值范围(32位机) 
正最小值: 0 00000001 00000000 00000000 0000000     // 0x1.0p-126f   1.18 X 10-38
 如何计算float的取值范围(32位机)
  正最大值: 0 11111110 11111111 11111111 1111111     // 0x1.fffffep127f   3.4 X 1038  约等于 2128
 如何计算float的取值范围(32位机)

 32位机上float的取值范围是:

 负无穷; -2128 ~ -2-126; -0; +0; 2-126< 2128; 正无穷;
 或者:
 负无穷; -3.4*1038 ~ -1.18*10-38; -0; +0; 1.18*10-38 ~ 3.4*1038; 正无穷;

你可能感兴趣的:(如何计算float的取值范围(32位机))