上面定义的共用体。
然后下面是读取的值(KEIL MDK编译器),为何红框里红圈的值不是5个F,
而是这样FFFFF
nt=32bitshort=16bitchar=8bit5个F,你说用什么类型表示?
有点复杂
bit 和 value 是共用关系,bit内的各个field不是共用关系。
数据类型有8位的、16位的、32位的,没有20位的。位域的数据类型是看它前面的声明,跟占用的位宽度没有关系。即使是int32_t xxx : 1; xxx的类型依然是int32_t类型,只不过只用了1位罢了。
涉及到bit对齐问题,建议你可以看看地址是不是一样。比如看一下over_discharge的地址和value[7]是不是一样。可能上面的bit定义中间留了空白。
这个是因为结构体对齐的问题,先看下你这样用位域到底占用了多少个字节哦。