0

位域在哪些情况下有用?

4

2 回答 2

1

在任何情况下,您都有多个要存储的布尔值并且您不想浪费内存。

例如,一个 32 位整数有 32 位。因此,您可以使用它来使用位字段存储 32 位布尔值。任何其他数据结构至少会使用 32 个字节。

于 2012-12-01T03:53:47.080 回答
1

罗迪的回答在这里有一个很好的解释

C中的位域操作

  • 位域使用起来更简洁(以/稍微/更冗长的编写为代价。
  • 位域更健壮(无论如何,“int”的大小是多少)
  • 位域通常与按位运算符一样快。
  • 当您混合使用单个位域和多个位域时,位域非常强大,并且提取多位域涉及大量手动移位。
  • 位域有效地自我记录。通过定义结构并因此命名元素,我知道它意味着什么。
  • 位域还可以无缝处理大于单个 int 的结构。
  • 对于按位运算符,典型的(不好的)做法是为位掩码使用大量#defines。

  • 位域的唯一警告是确保编译器确实将对象打包成您想要的大小。我不记得这是否由标准定义,因此 assert(sizeof(myStruct) == N) 是一个有用的检查。

还要经历什么时候值得使用位域?,其中有一些很好的例子。

于 2012-12-01T07:31:35.277 回答