多个位位置的 Unsigned int 位掩码
Unsigned int bitmask for multiple bit positions
我正在自学如何在 C 中执行位掩码和按位运算。
假设我想要一个全 0 的无符号整数位掩码,第 12 位和第 23 位为 1。
我正在考虑通过设置变量
来计算位掩码
unsigned int bitmask = 1<<12 & 1<<23;
我将如何计算具有多个要求的位掩码?
欢迎任何建议和指点。谢谢。
按位与 &
不是正确的运算符,因为它会产生零。您需要按位 |
代替:
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];
}
我正在自学如何在 C 中执行位掩码和按位运算。
假设我想要一个全 0 的无符号整数位掩码,第 12 位和第 23 位为 1。 我正在考虑通过设置变量
来计算位掩码unsigned int bitmask = 1<<12 & 1<<23;
我将如何计算具有多个要求的位掩码?
欢迎任何建议和指点。谢谢。
按位与 &
不是正确的运算符,因为它会产生零。您需要按位 |
代替:
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];
}