用c++写出两个整数的哈密顿距离定义为两个数二进制位不同的个数。给定两个 32 位整数 M 和 N ,输出 M 和 N 的哈密顿距离代码
时间: 2024-09-06 16:07:02 浏览: 73
哈密顿距离是信息论中用于度量两个字符串在相同长度下对应位置上不同字符的数量,可以用来表示两个整数在二进制表示下的不同位的数量。以下是一个简单的C++函数,用于计算两个32位整数M和N的哈密顿距离:
```cpp
#include <iostream>
// 计算两个整数的哈密顿距离的函数
int hammingDistance(int M, int N) {
int dist = 0; // 初始化距离为0
M ^= N; // 通过异或操作得到M和N不同的位
// 计算异或结果中1的个数,即不同的位数
while (M) {
dist += M & 1; // 检查M的最低位是否为1,并加到dist上
M >>= 1; // 将M右移一位,继续检查下一位
}
return dist;
}
int main() {
int M, N;
std::cout << "请输入两个32位整数M和N:" << std::endl;
std::cin >> M >> N;
std::cout << "M和N的哈密顿距离是:" << hammingDistance(M, N) << std::endl;
return 0;
}
```
这段代码首先定义了一个`hammingDistance`函数,通过异或操作来找出M和N在二进制表示下不同的位,然后通过不断右移并检查最低位是否为1来统计这些不同的位的数量。`main`函数中用户可以输入两个整数M和N,程序将计算并输出它们的哈密顿距离。