簡體   English   中英

C-使用按位運算符確定是否所有偶數均設置為1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM