两个整数的二进制数有多少的位不同
计算两个整数的二进制数有多少个位不同,我们首先可以想到异或操做:如果对应位相同就是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;
}