LeetCode上位1的个数,简单难度,记录下解题思路
传入一个32位的二进制数,之后要求这个数内1的个数,当然可以转成字符串之后用循环或者正则表达式来匹配获取,这里使用下位运算,平时正好用得少
已知传入的数总是32位二进制串,用一个掩码从最后一位开始依次比较当前位是否为1,为1则记录下来,不为就跳过,最后掩码还要移动,进行下次计算
var hammingWeight = function(n) {
// 计数位
let count = 0;
// 掩码
let mask = 1;
// 从最后一位开始比较
for(let i = 0;i < 32;i++){
if((n & mask) != 0){
count++;
}
// 掩码位移
mask <<= 1;
}
return count;
};