32位整数掩码

Mat*_*Koz 2 c binary bit-manipulation mask bitwise-operators

我正在完成一些CSE作业,我有一个关于声明更大位大小的整数的快速问题.我的任务是实现一个函数,如果x的任何奇数位为1(假设x的大小为32位),则返回1,否则返回0.

我允许声明一个具有位值的整数:

10101010101010101010101010101010

如果是这样,那么可能会出现任何问题吗?如果没有,为什么不呢?我有什么替代品?

我的功能:

int any_odd_one(unsigned x)
{
    int mask = 10101010101010101010101010101010
    if(x & mask)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

-Matt

nne*_*neo 7

您不能在C中使用二进制文字.而是使用十六进制或八进制表示法.

在您的情况下,您将使用,unsigned mask = 0xaaaaaaaa因为10101010...是以0xaaaaaaaa十六进制表示(每个1010都是a十六进制).