#include<stdio.h>
/*
浮点型 在内存中的 存储 在c 语言中有一个协议的标准规定的
有这样一个公式 【(-1)的0次方 表示正数 或者 1 次方 表示 负数 】乘以 【M】 乘以 2 乘以 2 的 [E] 次方
(-1)^S*M*2^E
其中 M 存在内存 中的 只保留 小数点 后面的数组 ,,1=<M<2 的数
E 指数 是 加 127 后 存放在 内存中的 是因为 指数 有可能是负数 不好表示 避免和前面的 S 冲突
其中在 32位系统 S 占 1 位 表示 正负数
E 占 8 位
M 占 23 位
其中在64位系统 S 占 1 位 表示 正负数
E 占 11 位
M 占 52 位
这样一个数浮点数 5.5
二进制表示 101.1
科学计算法表示 1.011*2^2 e=E+127=2+127
放在内存中 0 10000001 00000000000000000000011
s E M
*/
int main()
{
int n = 9; //00000000 00000000 00000000 00001001 整形数 9 的 二进制 在内存中 源码 反码 补码 都是一养的
float* pfloat = (float*)&n;
printf("n=%d\n", n);
printf("*pfloat=%f\n", *pfloat); //把存到内存的数据 以浮点数形式 输出 00000000 00000000 00000000 00001001
//
// 0 00000000 00000000000000000001001
// S E M
// 1.1001*2^-127 即使一个无限 接近 0的 数 0.000000 表示
*pfloat = 9.0; // 0 10000010 001000000000000000000000
printf(" n=%d\n", n); //0 10000010 001000000000000000000000
printf("*pfloat=%f\n", *pfloat); //
return 0;
}
/*
结果是
n=9
*pfloat=0.000000
n=1091567616
*pfloat=9.000000
*/