JZ15 二进制中1的个数
js中所有数值都以64位格式存储,但位操作会先将数值转化为32位,再进行位操作,之后再把结果转化为64位。 因此,本题中可以将整数n直接看成32位二进制数。
n = n & (n - 1) //这里只要n中存在1,n与n-1相与就会把最低为的1抵消掉
完整代码:
function NumberOf1(n)
{
// 直接把n看成32位二进制数
var num = 0;
while(n){
num++;
n = n & (n - 1)
}
return num
// write code here
}
module.exports = {
NumberOf1 : NumberOf1
};