/*
求两个数二进制中不同位的个数
编程内容:两个int(32位)整型m和n的二进制表达式中,有多少位(bit)不同?
输入例子:
1999 2299
输出例子:
7
*/
#include <stdio.h>
int count_bit_diff(int m, int n) {
//方式一:比较m,n的每个位
//int count = 0;
//int i = 0;
//for (i = 0; i < 32; i++) {
// if (((1 << i) & m) != ((1 << i) & n)) {
// count++;
// }
//}
//return count;
//方式二:m^n异或运算:相同为0,相异为1(想象二进制的加法)
int count = 0;
int res = m ^ n;
while (res) {//统计二进制中有多少个1
res = res & (res - 1);
count++;
}
}
int main() {
int m, n;
scanf_s("%d %d", &m, &n);
int count = count_bit_diff(m, n);
printf("%d\n",count);
return 0;
}
C语言-求两个数二进制中不同位的个数
最新推荐文章于 2024-08-10 15:05:30 发布