C++ 计算二进制数的汉明重量 - 示例与代码
汉明重量是指一个二进制数中 '1' 的个数。对于给定的二进制数 '011111111111111111111111111111111111111111111111111111110000000000000000000001111111111111',其汉明重量为 59。以下是 C++ 代码实现:
#include <iostream>
using namespace std;
int hammingWeight(uint32_t n) {
int count = 0;
while (n != 0) {
count++;
n = n & (n - 1);
}
return count;
}
int main() {
string s = '011111111111111111111111111111111111111111111111111111110000000000000000000001111111111111';
uint32_t num = stoi(s, nullptr, 2);
int hamming = hammingWeight(num);
cout << "The Hamming weight of " << s << " is " << hamming << endl;
return 0;
}
该代码使用位运算 & 和 - 来高效地计算汉明重量。在 hammingWeight 函数中,每次循环都将 n 与 n - 1 进行位运算,并将结果赋值给 n。这个操作会将 n 中最右边的 '1' 变成 '0',直到 n 为 0。循环的次数就是汉明重量。
原文地址: https://www.cveoy.top/t/topic/nZXp 著作权归作者所有。请勿转载和采集!