将两个数进行按位异或操作 ;若两个数相同;则结果为0;若两个数不同,则结果为1;
将进行按位异或后的数模二,若结果为1,则最后一位两个数不同;若结果为0,则最后一位两个数相同;
因为在二进制中,若最后一位是1,则这个数是奇数;若最后一位是0.则这个数是偶书;
1 *2 ^0 = 1 是奇数,其他都是1* 2 ^ x;x>1时为偶书;所以这个数是奇数;
0 * 2 ^0 = 0 是偶书,其他都是1* 2 ^ x;x>1时为偶书;所以这个数是偶数;
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d", &a, &b);
c = a ^ b;
int i = 0;
int count = 0;
for (i = 1; i <= 32; i++)
{
if (c % 2 == 1)
{
count++;
}
c = c >> 1;
}
printf("%d ", count);
return 0;
}