【发布时间】:2018-12-05 03:31:22
【问题描述】:
我有一个 uint32,我已经标记了一些位:
uint32 i = 0;
i |= (1 << 0);
i |= (1 << 5);
i |= (1 << 13);
i |= (1 << 19);
...
我想将其转换为 uint8(通过获取其前 8 位的状态并忽略其余部分)。显然我可以这样做:
uint8 j = 0;
for (int q = 0; q < 8; q++)
{
if (i & (1 << q))
{
j |= (1 << q);
}
}
但是有没有一种奇特的按位运算可以让我一举将位传输过来,而无需循环?
【问题讨论】:
标签: c++ bit-manipulation mask bit