使用bitset中的位填充int数组。

时间:2012-10-27 12:40:42

标签: c++ arrays int fill bitset

#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 个答案:

答案 0 :(得分:0)

1)因为您需要将字节大小(即sizeof(float)的大小)转换为以位为单位的大小(这是bitset期望的大小)。

2)在我看来,你已经把正确的比特值放入ieee。你能举个例子,说出你认为这是错误的原因。

相关问题