汉明距离
作者:
hayate
,
2024-02-13 11:27:52
,
所有人可见
,
阅读 51
//这段代码用于计算两个整数n和m之间的汉明距离。
//汉明距离是指两个(相同长度)字对应位不同的数量
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n, m; // 定义两个整数变量n和m
int main()
{
cin >> n >> m; // 从标准输入读取两个整数n和m
// 异或操作,找出n和m在哪些位上不同
// 异或结果中,每个为1的位表示n和m在这一位上是不同的
int sum = (n ^ m);
int res = 0; // 用于记录n和m之间不同位的数量,即汉明距离
// 循环直到sum变为0
// 每次循环中,通过 sum &= (sum - 1) 操作消除sum中最右边的1
// 这个操作实际上是将sum的二进制表示中的最低位的1变为0
// 每进行一次这样的操作,就意味着找到了一个n和m不同的位,因此res自增
while(sum)
{
sum &= (sum -1);
res++;
}
// 输出n和m之间的汉明距离
cout << res << endl;
return 0;
}