C ++ Плавающая точка представление для Big/Little EndianC++

Программы на C++. Форум разработчиков
Anonymous
C ++ Плавающая точка представление для Big/Little Endian

Сообщение Anonymous »

Я пытаюсь составить союз с представлением 32-битного номера с плавающей запятой IEEE. Пока что у меня есть: < /p>

Код: Выделить всё

#include 

struct FloatRepresentation{
union {
float value;
struct { uint32_t sign: 1; uint32_t exponent: 8; uint32_t mantissa: 23; };
}
}
Это облегчит и (возможно) быстрее просмотреть отдельные компоненты плавания, например, в функции get_fraction () или get_exponent () , чем использование маскировки. Endian для интегральных типов, но такие битсты, как этот, разрывает это? Например: < /p>
#if IS_BIG_ENDIAN
struct { uint32_t mantissa: 23; uint32_t exponent: 8; uint32_t sign: 1; };
#else
struct { uint32_t sign: 1; uint32_t exponent: 8; uint32_t mantissa: 23; };
#endif
< /code>
Есть ли простой способ сделать это совместимым с разными энданами? Это делает это автоматически?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... tle-endian

Вернуться в «C++»