开发者社区> 问答> 正文

ieee754标准表示下内存的布局

IDE是vs2010下
int main()
{
int i=5;//i二进制=00000000 00000000 00000000 00000101
float f=i;//f二进制=(0)(1000000 1)(0100000 00000000 00000000),由IEEE754标准表float示法而来,
//()内依次为:符号, 阶码, 尾数
int ii=(int )&f;//ii二进制=f二进制=(0)(1000000 1)(0100000 00000000 00000000),
//()内依次为:符号, 阶码, 尾数
printf("%d,%d,%d",sizeof(int),sizeof(float),sizeof(int *));//4,4,4
printf("%dn%dn%dn",i,f,ii);//printf后ii=1075052544,对应二进制=(0)(1000000 0001)(0100 00000000 00000000),
//符号, 阶码, 尾数,尾数后补32个0后刚好符号IEEE754标准Double类型
getchar();
}
我的疑问是f和ii在内存的二进制应该一样的才对啊

展开
收起
a123456678 2016-03-20 11:06:05 1866 0
1 条回答
写回答
取消 提交回答
  • 问题出在printf

    int main()
    {
    int i=1;
    float f=5;
    printf("%d , %f ,%dn",i,f,i);
    printf("%d , %d ,%d ,%dn",i,f,i,i);
    printf("%d , %d ,%d ,%dn",i,(int)f,i,i);
    printf("%d ,%d , %dn",i,i,f);
    system("pause");
    return 0;
    }

    显示如下:
    1 ,5.000000 ,1
    1 ,0 ,1075052544 ,1
    1 ,5 ,1 ,1
    1 ,1 ,0

    为么第二个i显示不正常,

    2019-07-17 19:09:09
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载