引子:
阅读一段代码:
int n = 9; //以整数的形式存储
float* pFloat = (float*)&n;
printf("%d\n", n); //输出 9
printf("%f", *pFloat); //输出 0.000000 这里以 浮点形式读取
*pFloat = 9.0; //以浮点的形式存储
printf("%d\n", n); //输出 1091567616 //以整数的方式读取
printf("%f\n", *pFloat); //输出 9.000000 00
这里会发现,浮点数在内存中的存储读取 和 整数在内存中的读取存储 是存在差异的,并不是单纯的以二进制序列的形式存储在内存中。
浮点数存储规则:
根据国际标准IEEE(电气和电子工程)754,任意一个二进制浮点数V,可以表示成以下的形式
(-1)^S * M * 2^E
(-1)^S 表示符号位,