题目: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).
For example, the 32-bit integer ’11’ has binary representation
00000000000000000000000000001011
, so the function should return 3.
题目分析:
- 题目的含义是将一个数表示为二进制数,二进制表示中含有1的个数
思路:
- 如果n除以2的余数是1,那么数n表达为二进制的时候一定有一位是1,那么计数加一
- 如果n除以2的余数是0,那么数n除以2在进行重复第一步
代码:
- C++:[8ms]
class Solution {
public:
int hammingWeight(uint32_t n) {
int i=0;
while(n>0)
{
if(n%2==1)
{
i++;
n=n-1;
}
else
{
n=n/2;
}
}
return i;
}
};
* Javascript:
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function(n) {
var i=0;
while(n>0)
{
if(n%2==1)//如果数字n除以2有余数1,那么二进制表示中一定有一位是1
{
n=n-1;
i++;
}
else//如果数字n除以2没有余数,所以二进制中一定这一位是0
{
n=n/2;
}
}
return i;
};