目录
根据 IEEE754 标准,任意一个浮点数V可表示为 V=(-1)^S*M*2^E
(-1)^S 表示符号位,S=0时V为正,S=1时Y为负
M为有效数字
E为指数位
这里以 float = -9.75f 为例 V=(-1)^(1)*1.00111*2^3
1. 符号位S
存储 0 或 1 ,占一个比特位。
对于-9.75f,S=1
2. 指数位E
存储时需要加上中间数 127 (8位的E) 或 1023 (11位的E)
这里 E=3+123=130
3. 有效位M
整数位总为 1,只需存储小数点后面部分,占 23 个比特位
这里存储值为 00111
4. 取出E的三种情况
1.E不全为0或不全为1
正常取出,即E计算值减去127(或1023),即为真实值,有效数字M前补上1
2.E全为0
E为1-127或1-1023,有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,即无限接近于0的很小的数字
3.E全为1
有效数字M全为0,表示正负无穷大
5. 补充:常量浮点数赋值后缀 " f "
强制转换类型,控制数据范围,避免溢出
常量浮点数默认是double型的,当1.5赋值给a 时,存在(double)1.5 到 (float) 1.5 的强制转换,当数据较小时,结果一般不会出现错误,当数据较大时,若将右值赋值给左值时产生溢出,结果就会出现非预期值,所以保险起见,最好在常量的末尾加后缀进行严格的限制。
后缀不区分大小写," f " 和 " F " 效果相同。
浮点常数进行类型转换的后缀只有:f (F)(单精度浮点数)、l (L)(长双精度浮点数),此外,由于浮点型常数总是有符号的,故没有u或U后缀。