3.14159 1e10可以写成1.0×10的10次方
 1e5 表示 1.0×10的5次方

int main()
{
	int n = 9;//4byte
	float* pFloat = (float*)&n;//float 指针访问4的字节
	printf("n值为:%d", n);//9
	printf("*pFloat值为:%f\n", *pFloat);//,是以浮点数的视角去看的
	*pFloat = 9.0;
	printf("num的值位:%d\n", n);
	printf("*pFloat的值为:%f\n", *pFloat);
	return 0;//由上得出浮点数和整数在内存中存储是有所区别的
	return 0;
}
 

接下来探讨浮点数在内存中如何存储

 s是0表示他是负数 s是1表示他是正数
5.5浮点数转换为二进制 101.1 后面是以的原因是后面是2的-1次方 等于2分之1
 101.1转换为科学计数法 1.011*2^2
 上面是二进制 如果是十进制向左移动两位是×10^2
1.011相当于可以理解为m
(-1)S*M*2E
 (-1) ^ 01.0112^2
 
 
 

 对于e是无符号整数的补充 float型 要加127 double型要加1023

float在内存中也是倒着存放的
指数e 怎么拿出来
分为三种情况

 
 
有了以上基础 再回看第一开始的那道题
int main()
{
	int n = 9;//4byte
	float* pFloat = (float*)&n;//float 指针访问4的字节
	printf("n值为:%d", n);//9
	printf("*pFloat值为:%f\n", *pFloat);
	*pFloat = 9.0;
	printf("num的值位:%d\n", n);
	printf("*pFloat的值为:%f\n", *pFloat);
	return 0;
	return 0;
}
 
int main()
{
	int n = 9;//4byte
	//00000000000000000000000000001001   9的二进制序列
	float* pFloat = (float*)&n;//float 指针访问4的字节
	printf("n值为:%d", n);//9
	printf("*pFloat值为:%f\n", *pFloat);//整形形式放进去 浮点数形式拿出来.%f打印  纸打印小数点后6位
	//0   00000000  00000000000000000001001  e为全0的情况 m位还原为0.xxx数字0.00000000000000000001001*2^-126  全0的时候e直接补0
   // s      e         m
	*pFloat = 9.0;
	
	printf("num的值位:%d\n", n);
	//以浮点数形式放进 所以要用到科学计数法
	//1001.0
	//1.001*2^3  小数点向左移动三位
	//E为3   需要加127
	//0 10000010 00100000000000000000000  
	//整数在内存中存的是二进制 补码   %d打印认为是有符号数  符号位0原反补相同  所以直接打印这个二进制序列
	
	printf("*pFloat的值为:%f\n", *pFloat);
	return 0;
	return 0;
}
                
















![(Java)[NOIP2006 普及组] 明明的随机数](https://img-blog.csdnimg.cn/6f77d97068c9475797df210e5a31a37c.png)

