浮点数分类:
float(32bits)和double(64bits)
浮点数表示的三个部分:
符号位 | 指数部分 | 尾数部分 | |
float | 1bit | 8bits | 23bits |
double | 1bit | 11bits | 52bits |
符号位:
正数为0,负数为1
指数部分:
指小数点左移或右移的位数再加偏移量(8bits的指数部分偏移量为127,11bits的指数部分偏移量为1023)。
注意:加偏移量是为了统一用正数表示指数部分,因为小数点右移时指数为负数
尾数部分:
小数点前面肯定有1个1,这个1省略,尾数部分只保存小数点后面的数
举例:11.05用float表示
1、11转换为二进制:1011
2、小数部分不断乘2,所得结果大于1则取值为1,小于1则取值为0,直至填满尾数部分
0.05*2=0.1——0
0.1*2=0.2——0
0.2*2=0.4——0
0.4*2=0.8——0
0.8*2=1.6——1
0.6*2=1.2——1(注意取小数部分)
。。。
最终尾数部分:小数点应该在1011的基础上左移3位,变成1.011000011。。。这时尾数部分为011000011.。。。
3、指数部分:小数点左移了3位,那么应该是3+127=130的二进制10000010
4、符号位为0