中易网

float a=1.0f在内存中的表示是3f800000,这个3f800000是怎么得出的?麻烦谁解答下

答案:3  悬赏:70  
解决时间 2021-01-17 14:45
  • 提问者网友:山高云阔
  • 2021-01-17 05:31
float a=1.0f在内存中的表示是3f800000,这个3f800000是怎么得出的?麻烦谁解答下
最佳答案
  • 二级知识专家网友:山河有幸埋战骨
  • 2021-01-17 06:58
3f800000H=0 01111111 00000000000000000000000B (注意我分成了三段)
符点型数据在X86机上占四个字节,其存储按IEEE754标准实现,即:
1位的符号位s 0(代表正数,1代表负数)
8位的指数位e(移码表示)01111111是0的移码
23位的小数位f 0000000000000000000000 表示小数部分为0
计算机在表示符点数时,要将10进制数转成二进制的规范数形式进行存储的。即:1.f*2^e在存储时,小数前面的1是隐式存储的,不体现在数据中。
现在翻译一下:
3f800000H=1.0*2^0=1.0
全部回答
  • 1楼网友:醉吻情书
  • 2021-01-17 07:54
那是地址,由编译器分配。
  • 2楼网友:玩家
  • 2021-01-17 07:29
给你一个比较标准的答复: 浮点数转化为整数时,是取整,而化为整数引用时 (int&)a 相当于 *(int*)&a。 所以 float a=1.0f; (int)a 和 (int&)a 是不同的,1.0f在内存中是 3F800000,作为int看待的话是1065353216,所以(int)a等于1,(int&)a等于1065353216。 而之所以当b=0.0f时,(int)b 和 (int&)b 相等,是因为0.0f和0的内存布局正好一致,都是 00000000。2011/8/31 15:12:28
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息