位域有用的情况?

时间:2012-12-01 03:38:56

标签: c bit-fields

位字段有用的情况是什么?

2 个答案:

答案 0 :(得分:1)

任何你想要存储多个布尔值并且不想浪费内存的情况。

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

答案 1 :(得分:1)

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

Bitfield manipulation in C

  • Bitfields更简洁易用 (以/略/更多为代价) 写作的冗长。
  • Bitfields 更健壮(什么尺寸是“int”, 反正)
  • Bitfield通常只是 与按位运算符一样快。
  • Bitfields非常强大 混合使用单个和多个位 字段,并提取 多位字段涉及到的负载 手动换班。
  • Bitfields 有效地自我记录。通过 定义结构,因此 命名元素,我知道它是什么 意思是做。
  • Bitfields还可以无缝地处理大于单个int的结构。
  • 对于按位运算符,典型(坏)练习是位掩码的大量#defines。

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

还要浏览When is it worthwhile to use bit fields?,其中有一些很好的例子。