C语言:浮点型的存储

浮点型在内存中的存储
常见的浮点型:(小数)
float,double,long double类型,浮点数表示的范围:float.h中定义
整形家族:int,short,char的表示范围在 limits.h头文件中定义
浮点型家族:的表示范围在float.h头文件中定义
可以在头文件中查看他们表示的最大值和最小值。

int main()
{
		int n=9;   //四个字节
		float*pFloat =(float *)&n;    //(float *)强制类型转换
		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;
}

打印结果:
9
0.000000
1091567616
9.000000

什么原因导致的结果?
因为浮点型在内存中存储的方式来决定的。
浮点型和整形在内存中的存储方式,和取读方式都是有区别的。
整型的形式放进去,浮点型的形式取;
浮点型的形式放进去,整形的形式取。显然结果出现问题。
显而易见,两者有区别。
浮点数和整数在内存中存储的方式一定是有区别:
整数是以补码的二进制方式存进去,而且会有一个大小端的顺序问题。

浮点型在内存中的存储有IEEE 754规定,

根据国际标准 IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式:
(-1)^S M2 ^ E
(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。
M表示有效数字,大于等于1,小于2
2^E表示指数位

举例说明:
浮点数:5.5 (10进制)
二进制:101.1 将其表示为科学计数法 1.0112^2
(-1)^0
1.011*2 ^ 2
S=0,M=1.011,E=2
有了S,M,E我们就可以很好的还原浮点数。

IEEE 754规定:对于32位的浮点数,最高的1位是符号位S,接着的8位是指数E,剩下的23位为有效数字M。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值