对于浮点类型在C语言中采用float和double类型来存储,float数据占用4字节,double占用8个字节,我们在声明一个float变量的时候,计算机是如何分配内存的呢?
首先无论是单精度还是双精度,在计算机的存储中分为如下的三个部分:
1、符号位:0代表是正,1代表是负
2、指数位:用于存储科学计数法中的指数数据,并且采用移位存储
3、尾数部分
单精度的存储方式:
双精度的存储方式
例如:
例如上图的结果表明,指数为-3,尾数为0.01,符号为0,所以可得,1 * 2 ^-3 * 1.01 也就等于1 * 0.00101 ,化为二进制位0.15625
问题: 为什么在float类型在计算机存储的时候要给指数加上127呢?
是为了更好的区分正负数,不然就需要判断标志位是0或者是1
来源:oschina
链接:https://my.oschina.net/u/3829768/blog/3192657