方法一:
结果:
//求两个数的二进制中不同位的个数
int diff() {
int a = 0;
int b = 0;
int count = 0;
int i = 0;
scanf("%d %d", &a,&b);
for (i = 0; i < 32; i++) {
if (((a >> i) & 1) != ((b >> i) & 1)) {
count++;
}
}
return count;
}
int main() {
int sum = diff();
printf("%d\n", sum);
return 0;
}
方法二(最优解):
这里用到了之前我博客写过的求一个二进制数有多少个1的方法
结果:
代码:
int diff2() {
int a = 0;
int b = 0;
int count = 0;
scanf("%d %d", &a, &b);
//这里可以用按位异或^,相同的为0,不同的为1,
//这样就只要统计按位异或后的1的个数
int ret = a ^ b;
int result = getnumCount(ret);
return result;
}
int main() {
int sum = diff2();
printf("%d\n", sum);
return 0;
}