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.
本题要求统计一个int型数字二进制表示时1的个数。可以通过对数字重复进行右移操作,统计最右边一位为1的个数。注意这里的数字类型为unsigned int,否则还需要考虑符号位为1的情况。右移操作的特性:各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
class Solution {
public:
int hammingWeight(uint32_t n) {
int count = 0;
while(n)
{
if (n & 1)
count++;
n = n >> 1;
}
return count;
}
};
LeetCode (11) Number of 1 Bits
原文:http://blog.csdn.net/angelazy/article/details/45116957