#include<stdio.h>
#include<stdlib.h>
//从事嵌入式开发和游戏外挂必须掌握
int main()
{
//浮点数存在误差,float类型只能精确到6~7位
float f1 = 6.25;
printf("地址 %x\n", &f1);
//断点
printf("float %d字节\n", sizeof(f1));
//0000 0000 0000 0000 0000 0000 0000 0000 0~31位
//第31位最高位为符号位 0为正 1为负
//第30位到23位这八位表示阶码 这八位数减去127之和来表示指数(2的指数);
//阶码 = 指数 + 127 ,避免太多符号位,指数在[-127,127]之间
//剩下23位为尾数部分,表示为小数点后的其余各位
//指数的底数在1和2之间
/*
如6.25 = 110.01B = 1.1001B *2^2;//
阶码 = 127 + (指数)2 = 129= 1000 0001B
尾数 = 100 1000 0000 0000 0000 0000B
所以内存中为
0 10000001 10010000000000000000000
符号 阶码 尾数
0100 0000 1100 1000 0000 0000 0000 0000
4 0 c 8
double类型64位
一个符号位,十一位阶码,小数部分52位,与float类似
*/
system("pause");
}
C语言之浮点数内存机制
最新推荐文章于 2022-01-10 16:12:34 发布