您好,我无法使用此功能。基本上,如果所有偶数位都是 1,函数应该返回 1,否则返回 0。由于某种原因,该程序总是打印 0。
代码如下:
#include <stdio.h>
int allEvenBits(int);
int main() {
printf("%d\n", allEvenBits(0xFFFFFFFE));
return 0;
}
int allEvenBits(int X) {
return !((X & 0x55555555) ^ 0x55555555);
}
最佳答案
您正在检查偶数的奇数位应该是0xAAAAAAAA
:
const unsigned int ODD_BITS_SET = 0x55555555;
const unsigned int EVEN_BITS_SET = 0xAAAAAAAA;
unsigned int allOddBits(unsigned int X) { return (X & ODD_BITS_SET) == ODD_BITS_SET; }
unsigned int allEvenBits(unsigned int X) { return (X & EVEN_BITS_SET) == EVEN_BITS_SET; }
最好给魔数(Magic Number)起个名字。
关于C - 使用按位运算符确定是否所有偶数位都设置为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877007/