编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/melody_1016/article/details/83149647

题目:编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 
 输入例子: 1999 2299 
 输出例子:7


思路:利用位操作中的“异或”。异或的特征:相同为0.相异为1。先利用两个数进行“异或”操作,得到一个值value,然后问题就演变成了数出这个值value中1的个数,与上一题一样的方法。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
int Dif_bits(int m, int n)
{
	//异或的特征:相同为0.相异为1
    //所以先异或得到一个值,然后数出这个值中1的个数
	int count = 0;
	int value = m^n;
	while (value != 0)
	{
		if ((value & 1) == 1)
		{
			count++;
		}
		value = value >> 1;
	}
	return count;
}
int main()
{
	int num1, num2;
	scanf("%d %d", &num1, &num2);
	int count = Dif_bits(num1, num2);
	printf("%d", count);
	system("pause");
	return 0;
}

测试结果:

猜你喜欢

转载自blog.csdn.net/melody_1016/article/details/83149647