C语言(求出两个数字二进制位数不同的个数)

写出一个函数,求出2个数字的二进制有几位不同,解题思路:可以利用异或运算,然后求出异或之后得出的数字有几个1就有几位不同。
源码如下
int NUM(int n)
{
int count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int n = 0;
int m = 0;
scanf("%d %d", &n, &m);
int ret = NUM(m^n);//m和n异或之后得出的二进制中的1的个数就是m和n二进制位数不同的个数
printf("%d\n", ret);
return 0;

猜你喜欢

转载自blog.csdn.net/Kirihara_Yukiho/article/details/123090386