要求:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
思路:
将两个数进行按位异或,此时相同的二进制比特位清零,不同的二进制比特位为1;采用按位与统计异或完成后结果的二进制比特位中有多少个1。
实现:
#include <stdio.h>
#include <windows.h>
int DifferBit(int a, int b){
int temp = a^b;
int count = 0;
while (temp){
temp = temp&(temp - 1);
count++;
}
return count;
}
int main(){
int m = 0;
int n = 0;
printf("Please enter two operands:\n");
scanf_s("%d %d", &m, &n);
int res=DifferBit(m, n);
printf("The different bits are:%d\n", res);
system("pause");
return 0;
}
运行结果:


本文介绍了一种通过位运算计算两个32位整数二进制表示中不同位数量的方法。利用异或运算找出两数二进制表示的不同位,并通过按位与操作统计这些不同位的数量。
求两个数二进制中不同位的个数---C语言&spm=1001.2101.3001.5002&articleId=111145124&d=1&t=3&u=b1b9a804c1f544e4be160aaa5be99a83)
2659

被折叠的 条评论
为什么被折叠?



