题目
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

这题有一个很牛逼的解法……但俺看不懂()


class Solution {
public:
int hammingWeight(uint32_t n) {
n = (n & 0x55555555) + ((n >> 1) & 0x55555555);
n = (n & 0x33333333) + ((n >> 2) & 0x33333333);
n = (n & 0x0F0F0F0F) + ((n >> 4) & 0x0F0F0F0F);
n = (n * (0x01010101) >> 24);
return n;
}
};
本文介绍了一个高效的算法,用于计算一个整数在二进制表示下1的个数。通过位操作和掩码,算法能在常数时间内得出结果,展示了位运算的魅力。


被折叠的 条评论
为什么被折叠?



