我正在使用位字段来轻松访问我正在尝试为没有 FPU 的微控制器制作的浮点库。
问题是我似乎无法使其与位字段一起使用。看一看:
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 位,然后是最后一位。除非我完全误解了位域的使用。我以为使用packed可以解决问题,但正如你所看到的,它没有解决。
任何帮助将非常感激。我不止一次在谷歌搜索时被引导到这个网站,所以我抱有很高的期望。
您可能缺少联合内的结构。
typedef struct
{
union{
struct {
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
} float_parts;
float all;
};
}_float __attribute__((__packed__));
请注意,尾数/指数和符号的顺序取决于 cpu 的字节顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)