闪亮的马路 发表于 2019-11-12 19:52:02

关于C++的类型转换问题

现有以下代码:
#include <iostream>
using namespace std;
union fd
{
    float d;
    unsigned char data;
}speed;
int main()
{
    speed.d = 1024.00;
    cout << "speed.d:" << speed.d <<endl;
    for(int i=0;i<4;i++)
    {
      //cout << i <<":" <<speed.data<<endl;
      cout << i <<":" <<int(speed.data)<<endl;
    }
    return 0;
}
运行结果为:
speed.d:1024
0:0
1:0
2:128
3:68
请问为什么尾数是0呢?

jackz007 发表于 2019-11-12 19:58:45

      说清楚一点,哪个尾数是 0 ?

闪亮的马路 发表于 2019-11-12 20:01:02

理解了
因为是转化成1.xxxxxx*2^n()然后再区分符号位,指数位,尾数位,所以当没有小数位,整数位是类似1000000000这种类型,这尾数位全为0,相当于1.00000*2^n,取0.0000000求二进制小数,所以均为0.
页: [1]
查看完整版本: 关于C++的类型转换问题