1. 问题描述
- 描述:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数。
- 输入:无符号整数
- 输出:二进制中1的个数
2. 解题思路(位运算)
-
关键点:取二进制位
-
解题步骤:
- a. 遍历数字每一位
- b. 统计1的个数
-
javascript
/**
* 位运算取位
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function (n) {
let count = 0;
while (n) {
count += n & 1;
n = n >>> 1;
}
return count;
};
- python
class Solution:
def hammingWeight(self, n: int) -> int:
count = 0
while n:
# 注意运算优先级
count = count + (n & 1)
n = n >> 1
return count
3. 解题思路(转二进制)
- csharp
public class Solution
{
public int HammingWeight(uint n)
{
var count = 0;
while (n != 0)
{
if (n % 2 == 1)
count++;
n /= 2;
}
return count;
}
}