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.
思路:
判断输入数据是否为0,不为0时:
输入数据和1与,结果不为0时,表示末尾数字为1;
当结果为0时,表示末尾数字为0;
右移输入数据,循环和1与比较,直到数据为0退出。
class Solution {
public:
int hammingWeight(uint32_t n) {
int num=0;
while(n!=0)
{
if(n&1)
num++;
//n=n/2;<span style="white-space:pre"> </span>//右移一位相当于除2
n=n>>1;
}
return num;
}
};