汉明重量是指一个二进制数中 '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 函数中,每次循环都将 nn - 1 进行位运算,并将结果赋值给 n。这个操作会将 n 中最右边的 '1' 变成 '0',直到 n 为 0。循环的次数就是汉明重量。

C++ 计算二进制数的汉明重量 - 示例与代码

原文地址: https://www.cveoy.top/t/topic/nZXp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录