三种办法对应运行时间:
#include<stdio.h>
int hammingDistance(int x, int y) {
scanf("x=%d,y=%d", &x, &y);//重定义
int temp[33] = {0}, temp2[33] = {0};
int i = 0, j = 0, sum = 0, k=0,a = 0,b=0;
bool mask=0;
while (x)
{
temp[i++] = (x % 2);
x = x / 2;
}
while (y)
{
temp2[j++] = (y % 2);
y = y / 2;
}
a = i > j ? i : j;
b = i > j ? j : i;
for (i=0,j=0;j<=a;i++,j++)
if (temp[i] != temp2[j])
sum++;
return sum;
}
int main()
{
int x, y,sum=0;
scanf("x=%d,y=%d", &x, &y);
sum=hammingDistance(x, y);
printf("%d", sum);
return 0;
}
#include<stdio.h>
#include<iostream>
int main()
{
int x, y, i, k,sum = 0;
scanf("x=%d,y=%d", &x, &y);
k= x^y;
while (k)
{
i = k % 2;
k /= 2;
if (i == 1)
sum++;
}
printf("%d", sum);
system("pause");
return 0;
}
//gcc编译器,codeblocks
#include<stdio.h>
int main()
{
int x, y, i, k;
scanf("x=%d,y=%d", &x, &y);
k= x^y;
return __builtin_popcount(k);
system("pause");
return 0;
}