C语言整形类型在内存中存储----

浮点型数据分为float(单精度)和double(双精度)、long double三种。
在32位平台下,单精度型占4个字节,双精度类型占8个字节。
那么浮点型在内存中又是以什么样的形式存储和读取呢?下面就以float型为例进行讲解。
首先,我们先回顾一下数学上对科学计数法的规定。
如:1034 用科学计数法可写成1.034x10^3。
可见,科学计数法规定有效数字的范围为(i>=1&&i<10),而10^3实际上是将小数点向右移动三位。
同理,浮点型在内存中的存储类似于科学计数法。

//int a=10的二进制为0000 0000 0000 0000 0000 0000 0000 1010
 //float a=10.0的二进制为1.010*2^3
 //根据国际标准规定:float存储时满足以下公式:(-1)^S*M*2^E
 //1.(-1)^S表示符号位,当S=0时,数据为正数;S=1时,数据为负数;
 //2.M代表有效数字,范围为(i>=1&&i<2);
 //3.2^E代表指数位。
 //由float a=10.0的二进制可得出S=0,M=1.010,E=3。
 //国际规定,对于32位的浮点数在内存中存储,最高位为符号位(S),接着八位为指数位(E),剩下的为有效数位(M).

但在存储时对E、M有其他规定。

练习题:

#include<stdio.h>
#include<stdlib.h>
int main()
{
 int n = 9;
 float *pFloat = (float*)&n;
 printf("n的值为:%d\n", n);
 printf("pFloat的值为:%f\n", *pFloat);
 *pFloat = 9.0;
 printf("n的值为:%d\n", n);
 printf("pFloat的值为:%f\n", *pFloat);
 system("pause");
 return 0;
}

结果:

分析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值