这里我们以8.25这个数为例说明计算机时如何存取float类型的数据的:
floata=8.25;
1.引言
1.所占位数
首先,明确一个概念,float类型的数据在常规计算机中通常占4个字节,也就是2位。其内存分布如图:
2.科学计数法
在十进制中,我们了解科学计数法。
例如,的科学计数法表述为:8.25*,0.0的科学计数法表述为:8.25*10(-2)
请注意观察这一点:整数部分的值是大于1小于10的。后面的指数部分也有正指数和负指数。
2.计算步骤
1.二进制表示
将8.25用二进制数表示出来:
首先:整数部分为8,二进制表示为;
其次,小数部分为0.25,为二进制表示计算方法和整数部分的计算方法恰恰相反,整数部分转换二进制的时候是不断除以2得到的,这里就是不断乘以2:
0.25*2=0.5,整数部分为0,记下:0
0.5*2=1.0,整数部分为1,记下:1
则0.25的二进制表示即为0.01,即1*2^(-2);
在这一阶段,我们得出结果:8.25的二进制表示为:.01
2.使用科学计数法来表示
在引言里介绍了十进制的科学计数法,同理我们推理出二进制的科学计数法:
8.25的二进制表示为:.01;
.01的二进制科学计数法表示为:1.*2^
请根据引言中的注意事项,可以推理出:在二进制的科学计数法中:整数部分的取值只能是1,是个固定值。
因此在表示中可以直接把这一步写死,根本不需要去表示整数部分。
.转化为计算机存储数据
1.*2^
在引言里,我们已经知道了浮点数在计算机中的表示方法,套用这套表示方法,我们可以知道:
符号位:
8.25是一个正数,因此这位为0.
指数位:
指数位为+,所以这里的值为+=10,10的二进制表示为0010,因此这里为0010。
尾数位:
小数位为,这里尾数位占用2个字节,位数不够,所以补0,因此这里为:后面补18个0。
.得出结论
浮点数8.25在计算机中的二进制表示为:0000