hamming distance二进制数异或有几个1

三种办法对应运行时间:

#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; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值