💘作者:你我皆为凡人
💘博客主页:你我皆为凡人的博客
💘名言警句:时间不会为任何人停留,而事物与人,无时不刻也在变化着。每一个人,也都在不停向前!
💘觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!
💘系列作品:
💘
文章目录
目录
🙈 前言
本文即上篇的文章后讲解了关于浮点型在内存中的存储,一些你不曾了解的知识点,为什么浮点数存储整型打印,整型存储浮点数打印出乎你的意料呢?浮点数是如何存储,又是如何取出呢?看完以后,你的疑惑,将全部得到解决
提示:以下是本篇文章正文内容,下面案例可供参考
💫浮点型在内存中的存储
常见的浮点数有小数,π,1E10,这种科学计数法
浮点数家族包括 float double long double类型
而浮点数表示的范围在float.h中定义
💘 浮点数存储的例子
先思考一个例子:
int main()
{
int n = 9;
float *pFloat = (float *)&n;
printf("n的值为:%d\n",n);
printf("*pFloat的值为:%f\n",*pFloat);
*pFloat = 9.0;
printf("num的值为:%d\n",n);
printf("*pFloat的值为:%f\n",*pFloat);
return 0;
}
输出的结果为什么会是下面这样呢?
大家先带着这个问题往下看
💘 浮点数存储规则
num 和 *pFloat 在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别这么大要理解这个结果,一定要搞懂浮点数在计算机内部的表示方法。详细解读:根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:(-1)^S * M * 2^E(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。M表示有效数字,大于等于1,小于2。2^E表示指数位。
举例来说:
V=5.0f;如何写成二进制呢?
写成二进制为:101.0