#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
中。你能举个例子,说你为什么认为这是错误的。