位 1 的个数
Tips
题目
编写一个函数, 输入是一个无符号整数(以二进制串的形式), 返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)
示例
输入: 00000000000000000000000000001011
输出: 3
输入: 00000000000000000000000010000000
输出: 1
题解
使用 n & (n - 1)
关于使用 n & (n - 1), 这里不再赘述, 可访问 位运算的一些技巧.
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function (n) {
let res = 0
// 依次把二进制的最后一个 1 变为 0
while (n !== 0) {
// 用于把二进制的最后一个 1 变成 0
n = n & (n - 1)
res++
}
return res
}