【发布时间】:2011-11-15 15:34:35
【问题描述】:
问题说明了一切。
如果我有 96 位字段:
uint32_t flags[3]; //(thanks @jalf!)
鉴于其中的子字段可能位于 32 位边界(例如,从位 29 到 35 的字段),我如何最好地访问它?
我需要尽可能快地访问,所以我不想将它们作为数组的 32 位元素进行迭代。
【问题讨论】:
-
您希望在位域上执行什么样的操作?
-
如果你碰巧在 64 位机器上安装了 gcc、clang 等,你可以使用它们的 128 位数据类型,
__uint128_t左右。 -
@JensGustedt 我曾考虑过这一点,但我需要正好 96 位来实现数据的紧凑性和更好的缓存性能(最后 32 位只会浪费在缓存中)。
标签: c++ c bit-manipulation bit-fields