//int main()
//{
// float f = 5.5;
// //5.5
// // 101.1 二进制
// // (-1)^0 * 1.011*2^2
// // s = 0 M = 1.011 E = 2
// // E存的是2 + 127 = 129
// // 0 10000001 011 00000000000000000000000
// // s E M
// // 4 0 B 0 0 0 0 0 十六进制
// // 如果E 为全0 规定1-127 或1-1023为E的真实值
// // M不在加上第一位的1.直接还原为
// // 0.xxxxxxx的小数 表示正负0 以及接近0的数字
// // 如果E 为全1 E的真实值为255-127 = 128
// // 表示正负无穷大
// //
// return 0;
//}
int main()
{
/*double d = 1E10;
printf("%lf\n", d);*/
int n = 9;
//0 00000000 00000000000000000001001 - 补码
//
//
float* pfloat = (float*)&n;
printf("n的值为:%d\n", n);//---9
//把9的补码按浮点数存储方式取出
// (-1)^0 * 0.00000000000000000001001 * 2^-126
printf("pfloat的值为:%f\n", *pfloat);//---0.000000
*pfloat = 9.0;
//1001.0 二进制
// (-1)^0 * 1.001 * 2^3
// E = 3 + 127
// 0 10000010 001 00000000000000000000 浮点类型存入
// 按整型int 类型取出
//
//
printf("num的值为:%d\n", n);//---1091567616
printf("pfloat的值为:%f\n", *pfloat);//---9.000000
//9.0
//1001.0 二进制
//(-1)^0 * 1.001 * 2^3 2^3 是二进制的科学计数法
//V = (-1)^s * M * 2^E (IEEE754 标准)
// s = 0 M = 1.001 E = 3
// 1 <= M < 2 表示1.xxxxxxxx M只需要存 小数点后面的xxxxxxxx就可以了
// 指数E是unsigned int 无符号数 E取8位 取值范围0-255
// E取11位时 取值范围为0-2047
// 0.5
// 0.1 2^-1 等于1/2^1 二进制
// (-1)^0 * 1.0 *2^-1
// E 科学计数法实际情况会出现负数的,存储内存时加一个取值范围内的中间数
// 8位的为127 11位的位1023 这样就可以存为无符号数
// float 32位浮点数,最高的1位是符号位s,
//接着的8位是指数E,剩下的23位是有效数字M
// double 64位浮点数,最高的1位是符号位s,
//接着的11位是指数E,剩下的52位是有效数字M
return 0;
}