两个数进行异或,得到的数然后进行判断这个数的二进制位有多少个1即可。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
int count = 0;//对位数计数
int count1 = 0;//计不相同的位
int num = 0;
int arr[32] = {0};
int i = 0;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
num = a^b;
while(num)
{
arr[i]= num % 2;
num = num / 2;
i++;
count++;
}
for (i=0;i<=count;i++)
{
if(1 == arr[i])
{
count1++;
}
}
printf("不相同的位有:%d位\n",count1);
system("pause");
return 0;
}