两个整数的二进制数有多少的位不同

计算两个整数的二进制数有多少个位不同,我们首先可以想到异或操做:如果对应位相同就是0,否则就是1.通过计算这个新数的二进制数1的个数就可以计算出这两个二进制数有多少个位不同。

完整代码如下,需要注意的

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a; int b; int c; int count=0;
	while (1)
	{
		printf("请输入小于等于255的a的值:");
		scanf_s("%d", &a);
		if (a <= 255)
			break;
	}
	while (1)
	{
		printf("请输入小于等于255的b的值:");
		scanf("%d", &b);
		if (b <= 255)
			break;
	}
	c = a^b;
	for (int i = 0; i < 32; i ++)
	{
		if (((c >> i) & 1) == 1)
			count++;
	}
	printf("a与b的二进制数共有%d个位不同\n", count );
     system("pause");
     return 0;
}