题目描述:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)
示例 :
输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000000000000000000001011
解法1
思路:将无符号整数转换成二进制,然后逐位判断是否为1
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function (n) {
var bin = n.toString(2);
var len = bin.length;
var count = 0;
for(var i = 0; i < len; i++) {
if(bin[i] == 1)
count++;
}
return count;
};
解法2
思路:无符号整数除2取余,循环得到二进制每一位的值
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function (n) {
let count = 0;
while (n) {
if (n % 2)
count++;
n = parseInt(n / 2);
}
return count;
};