6.4 位字段 Bit-fields

6.4.1 《krc-2e》对 bit-field 的解释

6.4.2 位域/位字段/位段 demo

形如:

这里 a 定义为 1 位,b 定义为 3 位,c 定义为 5 位。

使用位段的好处是可以大大节省内存空间,因为多个小的字段可以联合起来装进一个字节中。并且位段也可以用于二进制表示、状态标志、寄存器等需要精细控制每一位的场景

然而位段也有其缺点,主要体现在不便操作,不能寻址,并且具体实现依赖于编译器。需要慎重使用。

总的来说,位段是C语言结构体的一项高级功能,允许精细化控制内存布局和利用率。使用得当可以发挥很好的作用。

6.4.3 位字段大小

结论:位域的大小不能超过其类型的大小。例如,如果你的位域是 int 类型的,那么它的大小不能超过 int 类型的大小。在大多数平台上,int 类型的大小是 32 位。

在大多数平台上,int 类型的大小是 32 位。

6.4.4 特殊情况:0 位段

在 C 语言中,位域的大小可以为 0。一个大小为 0 的位域用于强制下一个位域开始于下一个整数类型的存储单元。这通常用于对齐目的。在这个例子中,a 是一个 4 位的位域,然后是一个大小为 0 的位域,然后是 b,也是一个 4 位的位域。

大小为 0 的位域将导致 b 开始于下一个存储单元,这样 a 和 b 就不会在同一个字节中。需要注意的是,大小为 0 的位域不能有名称,因为它们实际上不存储任何信息。

Last updated

Was this helpful?