我自学了如何在C中执行位掩码和按位操作。
假设我想要一个全0的无符号整数位掩码,其中1和12位和23位。 我正在考虑通过设置变量
来计算位掩码unsigned int bitmask = 1<<12 & 1<<23;
我如何计算有多个要求的位掩码?
任何建议和指示都表示赞赏。谢谢。
答案 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];
}