#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
, Можете ли вы привести пример и сказать, почему вы думаете, что это неправильно.
Других решений пока нет …