法一:通过比较两个数的二进制位的每一个位。
#include <stdio.h>
int bs_differ1(int m, int n) {
int count = 0;//记录不同位个数
int i = 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;
printf("请输入要比较的两个数>");
scanf("%d%d", &m, &n);
printf("%d和%d二进制位不同的个数为%d\n", m, n, bs_differ1(m, n));
return 0;
}
运行结果: