191. Number of 1 Bits
Difficulty: Easy
Write a function that takes an unsigned integer and return the number of ‘1’ bits it has (also known as the ).
Example 1:
Input: 00000000000000000000000000001011
Output: 3
Explanation: The input binary string 00000000000000000000000000001011 has a total of three '1' bits.
Example 2:
Input: 00000000000000000000000010000000
Output: 1
Explanation: The input binary string 00000000000000000000000010000000 has a total of one '1' bit.
Example 3:
Input: 11111111111111111111111111111101
Output: 31
Explanation: The input binary string 11111111111111111111111111111101 has a total of thirty one '1' bits.
Solution
思路1
使用位运算,其中n = n&(n-1)
操作,可消除n
最后一位为1
的值。例如(n=3)
:
n
二进制为:011
n-1
二进制为:010
&
与运算,两者都为一,结果为1
。
经过n = n&(n-1),n=010
。
循环,直至n
全为0
为止。
Language: C++
class Solution {
public:
int hammingWeight(uint32_t n) {
int count = 0;
while (n != 0) {
count++;
n = n & (n-1);
}
return count;
}
};
思路2
循环遍历,定义Mark
为1
,从尾端开始和n
进行&
运算,如果结果为1
,则count++;
class Solution {
public:
int hammingWeight(uint32_t n) {
int count = 0;
uint32_t mark = 1;
for (int i = 0; i < 32; i++) {
if (n & mark)
count++;
mark = mark << 1; //左移一位
}
return count;
}
};