#include <stdio.h>
bool check1(unsigned int num)
{
bool odd = false;
while(num)
{
odd = !odd;
num = num & (num-1);
}
return odd;
}
bool check2(unsigned int x)
{
unsigned int val=0;
while(x)
{
val^= x&0x1;
x = x>>1;
}
return val&0x1;
}
int main()
{
for(unsigned int a = 0x33; a<0x55; a++)
printf("%x-->check1(%d), check2(%d)\n", a,check1(a), check2(a));
}
bool check1(unsigned int num)
{
bool odd = false;
while(num)
{
odd = !odd;
num = num & (num-1);
}
return odd;
}
bool check2(unsigned int x)
{
unsigned int val=0;
while(x)
{
val^= x&0x1;
x = x>>1;
}
return val&0x1;
}
int main()
{
for(unsigned int a = 0x33; a<0x55; a++)
printf("%x-->check1(%d), check2(%d)\n", a,check1(a), check2(a));
}
位操作判断奇偶性
本文介绍了一种使用位操作来判断整数中1的个数是否为奇数的方法,并提供了两种实现方式:一种是通过不断清除最低位的1并翻转布尔值;另一种是通过移位和异或运算实现。这两种方法都具有较高的效率。


被折叠的 条评论
为什么被折叠?



