191. Number of 1 Bits

題目原文

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

Example 1:

Input: 11
Output: 3
Explanation: Integer 11 has binary representation 00000000000000000000000000001011 

Example 2:

Input: 128
Output: 1
Explanation: Integer 128 has binary representation 00000000000000000000000010000000

解題思路

  1. 我的解法比較像是韌體工程師的想法。

  2. 當作是shift的方式移動32bit register 。

  3. 判斷lsb bit為0/1,如果是1把ans + 1。

程式解答

class Solution 
{
public:
    int hammingWeight(uint32_t n) 
    {
        uint32_t cnt = 0xffffffff;
        uint32_t ans = 0;
        
        while (cnt)
        {
            if (n % 2)
                ans++;
            n = n >> 1;
            cnt = cnt >> 1;
        }
        return ans;
    }
};

Last updated

Was this helpful?