Заполнение массива int битами в наборе битов.

#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

Решение

1) Потому что вам нужно конвертировать размер в байтах (вот что sizeof(float) есть) в размере в битах (что к чему bitset надеется).

2) Похоже, вы уже вводите правильное значение бита в ieee, Можете ли вы привести пример и сказать, почему вы думаете, что это неправильно.

0

Другие решения

Других решений пока нет …