多位位置的无符号int位掩码

时间:2016-02-17 03:40:03

标签: c bit-manipulation bit

我自学了如何在C中执行位掩码和按位操作。

假设我想要一个全0的无符号整数位掩码,其中1和12位和23位。 我正在考虑通过设置变量

来计算位掩码
unsigned int bitmask = 1<<12 & 1<<23;

我如何计算有多个要求的位掩码?

任何建议和指示都表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:4)

按位AND &不是正确的运算符,因为它会产生零。您需要按位|代替:

unsigned int bitmask = 1U<<12 | 1U<<23;

如果要查找设置了多个位的位掩码,可以使用for循环:

int bits[] = {1, 5, 13, 28};
unsigned int bitmask = 0;
for (int i = 0 ; i != 4 ; i++) {
    bitmask |= 1U << bits[i];
}