//方法一:找到m和n的每一位进行比较
#include <stdio.h>
int diff(int m, int n)
{
int i = 0;
int count = 0;
for (i = 0;i < 32;i++)
{
if (((m >> i) & 1 )!=( (n >> i) & 1))
{
count++;
}
}
return count;
}
int main()
{
int m = 0;
int n = 0;
scanf_s("%d %d", &m, &n);
int ret=diff(m, n);//ret接收不同个数
printf("%d\n", ret);
return 0;
}
//方法二:m与n异或得到的值赋给ret,统计ret中1的个数
#include <stdio.h>
int diff(int m, int n)
{
int count = 0;
//异或操作符^:对应二进制位相同为0,不同为1
int ret = m ^ n;
//统计一下ret二进位有几个1就可以了
while (ret)
{
ret = ret & (ret - 1);
count++;//用来接收ret中1的个数
}
return count;
}
int main()
{
int m = 0;
int n = 0;
scanf_s("%d %d", &m, &n);
int ret = diff(m, n);//ret接收不同个数
printf("%d\n", ret);
return 0;
}