leetcode191:二进制中1的个数(解决二进制的&、|、^、~与左移右移问题)

AC双百
思路就是比照最后一位与1的结果有

n & 1 =1

然后右移,右移就是二进制数整体向右移动,左边补零;>>
左移就是二进制数整体向左移动,右边补零注意符号;<<
由于定义 n 为 uint32_t 是一个无符号数
这里是无符号数,右移的符号>>=

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int count = 0;
        while(n)
        {
            if(n & 1)
            {
                ++count;
            }
            n >>= 1;
        }
        return count;
    }
};

你可能感兴趣的:(leetcode)