计算机中采用规格化数的形式,计算机中存储的是数符,阶符,阶码,尾数。
公众号上看到的一道题目
#include <stdio.h>
int main(){
double a = 10;
printf("a = %d\n",a);
return 0;
}
结果是多少?
我运行了一下,结果是a = 0;
这是为什么?
根据IEEE标准,双精度浮点数由8个字节共64位组成,其中最高位为符号位,次高的11位为指数位,余下的52位为尾数位
printf会从低地址到高地址读取4个字节当做int型数据去解释并输出,所以,经过分析这段代码的输出应该为“a = 0”