本人0基础开始学编程,我能学会的,你也一定可以,学会多少写多少。
下载安装请从官网入手,社区版本即可,这里主要使用的软件是VS2019,图标如下。
上一篇:从0开始学c语言-24- 剖析数据在内存中的存储(整型在内存中的储存和练习)、char的取值范围、大端小端储存_阿秋的阿秋不是阿秋的博客-优快云博客
目录
浮点型在内存中的存储
3.14159
1E10
浮点数家族包括:
float
、
double
、
long double
类型。
浮点数表示的范围:
float.h
中定义
教你怎么看整型和浮点的最大范围
//limits.h中定义了整型取值范围
//float.h中定义了浮点
#include <limits.h>
#include <float.h>
int main()
{
INT_MAX;
FLT_MAX;
return 0;
}
选中之后,按快捷键f12或者Alt+f12,或者右击选择转到定义或者速览定义。
就可以看到取值范围了。
例子展示
int main()
{
int n = 9;
float *pFloat = (float *)&n;
//(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; }
是不是和你预想的结果不一样?
别着急,我们慢慢来了解。
浮点数存储规则
浮点数在计算机内部的表示方法:
根据国际标准 IEEE (电气和电子工程协会) 754 ,任意一个二进制浮点数 V 可以表示成下面的形式:(-1)^S * M * 2^E(-1)^s 表示符号位,当 s=0 , V 为正数;当 s=1 , V 为负数。M 表示有效数字,大于等于 1 ,小于 2 。2^E 表示指数位。(2^1)
例子
照着上面说的,我们来试试把十进制的浮点数字,用 (-1)^S * M * 2^E 的形式来表示一下。
5.5 是一个浮点数-此时是10进制形式
5的二进制是101 , 剩下的0.5 相当于二进制的 0.1因为 十进制的 0.5 = 5*10的-1次方 ,类比一下的话二进制的 0.1 = 1*2 的-1次方 ,1*2的-1次方 = 2的1次方分之一 = 1/2 = 0.5那么 十进制的5.5就可以表示为 二进制的101.1
因为
M表示有效数字,大于等于1,小于2。
所以我们需要把 101.1的小数点向前挪动两位, 101.1 ——> 1.011 * 2^2
类比一下十进制的 167.8把小数点向前挪动两位,那么二进制101.1的小数点向前挪动两位,也是一样的道理167.8 ——> 1.678 * 10^2101.1 ——> 1.011 * 2^2
看一下形式,
(-1)^S * M * 2^E
此时我们的M=1.011 ,E=2 ,还差