#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
数组?
答案 0 :(得分:0)
1)因为您需要将字节大小(即sizeof(float)
的大小)转换为以位为单位的大小(这是bitset
期望的大小)。
2)在我看来,你已经把正确的比特值放入ieee
。你能举个例子,说出你认为这是错误的原因。