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的个数(也叫做汉明权重)
//例如32位整数'11'的二进制表示为:00000000000000000000000000001011,因此函数应当返回3
//解题思路:按照十进制转二进制的方法,记录余数为1的个数,即汉明权重
class Solution {
public:
int hammingWeight(uint32_t n) {
int c = 0;
while (n > 0){
if (n % 2 == 1)
c++;
n = n / 2;
}
return c;
}
};
//方法二:位操作(bit manipulation)
class Solution {
public:
int hammingWeight(uint32_t n) {
int c = 0;
while (n > 0){
if (n &1 == 1)
c++;
n = n>>1;
}
return c;
}
};