Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.
常规思路,每次最低位与1,如果为1则右移一位,cnt++,如果n为0则while循环结束。参考讨论区大神的代码n = n&(n-1),每次会去掉一位1。

int hammingWeight(uint32_t n) 
{
    int cnt = 0;
    while(n)
    {
        if(1 == (n&1))
        {
            cnt++;
        }
        
        n = n >> 1;
    }
    return cnt;
}
int hammingWeight(uint32_t n)
{
    int res = 0;
    while(n)
    {
        n &= n - 1;
        ++ res;
    }
    return res;
}