在32位机上,float占4个字节。
signal exponent fraction
0 00000000 00000000 00000000 0000000
signal : 正负 1位
exponent : 指数 8位
fraction : 小数 23 位
1 01111100 01000000 00000000 0000000
- 1.012X 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
负最大值: 1 00000001 11111111 11111111 1111111 // -0x1.0p-126f -1.18 X 10-38
正最小值: 0 00000001 00000000 00000000 0000000 // 0x1.0p-126f 1.18 X 10-38
正最大值: 0 11111110 11111111 11111111 1111111 // 0x1.fffffep127f 3.4 X 1038 约等于 2128
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; 正无穷;