两篇非常棒的文章。
1. 再谈c语言位域
2. Section bitfields
简要总结一下:
C99 guarentees that bit-fields will be packed as tightly as possible, provided they don’t cross storage unit boundaries
Note that the base type of a bit field is interpreted for signedness but not necessarily for size. It is up to implementors whether "short flip:1" or "long flip:1" are supported, and whether those base types change the size of the storage unit the field is packed into.就是说int a:2;并不是说就会分配int大小的空间,可能只分配可以容纳2bits的空间。
大小端不仅影响byte order,也影响bit order。
对于一个byte,定义它的各个位为:b7 b6 b5 b4 b3 b2 b1 b0. 其中 b7 是起始地址开始的地方。