[英]C - Using bitwise operators to determine if all even bits are set to 1
嗨,我在讓此功能正常工作時遇到了麻煩。 基本上,如果所有偶數位均為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; }
最好給魔術數字起個名字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.