Я использую bitfields, чтобы получить легкий доступ к библиотеке float, которую я пытаюсь сделать для микроконтроллера без FPU.Каков правильный способ использования битовых полей в C?
Проблема в том, что я не могу заставить работать с битовыми полями. Посмотрите:
typedef struct
{
union{
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
float all;
};
}_float __attribute__((__packed__));
Проблема заключается в том, что, когда я пытаюсь получить доступ или изменить что-либо он считает, битовые поля как 1,8,23 биты с конца соответственно. Хотя это должно быть 23 бита с конца, затем 8 бит, а затем последний бит. Если я полностью не понял использование битовых полей. Я думал, что использование упакованного решит проблему, но, как вы можете видеть, это не так.
Любая помощь была бы действительно оценена. Я был вовлечен в этот сайт, когда я неоднократно роуглинг, поэтому у меня большие надежды.
Правильный способ использования битовых полей - не использовать битовые поля. –