0
#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用正确的位值填充数组?

4

1 回答 1

0

1)因为您需要将字节大小(就是这样sizeof(float))转换为位大小(这是bitset预期的)。

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

于 2012-10-27T12:44:43.857 回答