以单精度类型变量为例
1.国际标准IEEE(电气和电子工程协会)754,任意一个浮点数都可以表示为(-1)^S*M*2^E,其中
(1)S表示符号位,当数据为负时S = 1,当数据为正时S = 0;
(2)M表示有效数字位,它在内存中占据23个比特位,它的取值范围是大于等于1,小于2,而计算机对M进行存的时候只存小数点后的数据,所以程序员在进行取数据时必须给其加1,而计算机在进行存的时候必须将其小数点前的1减掉;
(3)E代表指数位,它是一个无符号数,所以程序员将E从内存中取出时必须减去127,而将E存入内存中时必须加上127。

2.IEEE的几种特殊规定
(1)对于E全为0的时候,取出来的数据便应该是-127,这个时候也就意味着指数为-127,而有效数字为1点几,再乘以一个2^-127,此时会是一个特别小的数据,标准规定,此时数据便是0
(2)对于E全为1时,表示数据为无穷大(小),具体得看数据的符号位
(3)对于不全为0或者不全为1,数据的存取遵守1
3.练习题
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int num = 9;
float *p_float = (float*)#
printf("num = %d\n", num);
printf("*p_float = %f\n", *p_float);
*p_float = 9.0;
printf("num = %d\n", num);
printf("*p_float = %f\n", *p_float);
return 0;
}

对上述练习题的解析:
int num = 9;
在计算机内存存储形式为:0000 0000 0000 0000 0000 0000 0000 1001,此时E全为0,所有打印出来的浮点数为0
*p_float = (*float)#
(-1)^0*1.001*2^3
0 1000 0010 001 0000 0000 0000 0000 0000
由上比特位序列可知,打印出来的浮点数位9,整数为一个巨大的数字
3.双精度只是中间数由127变为1023,其他的都不变,这里不再做叙述