将int阵列填充有位


#define CHAR_BIT 8
union
{
     float input;   // assumes sizeof(float) == sizeof(int)
     int   output;
}    data;
data.input = 122.5;
bitset<sizeof(float) * CHAR_BIT>   bits(data.output);
int ieee[32];
for(int i = 0 ; i < 32 ; ++i){
    ieee[i] = (int)bits[i];
}

我的意图是用浮子的IEEE表示填充ieee数组,并且已经完成(我使用了另一个问题中的代码),但是有两件事我不了解:

1)为什么我必须使用#define CHAR_BIT 8进行正确的输出?

2)如何用正确的位值填充ieee数组?

1),因为您需要将大小(这就是sizeof(float)是什么)中的大小转换为位中的大小(这是bitset期望的)。

2)在我看来,您已经将正确的位值放入ieee中。你能举个例子,说你为什么认为这是错误的。

最新更新