Javascript 如何找到1';在一个数字的二进制表示中是什么?

Javascript 如何找到1';在一个数字的二进制表示中是什么?,javascript,binary,Javascript,Binary,从其他搜索中,我发现这个问题被称为“汉明重量”或“人口计数”。有这么多的统计数据给出了很多答案? 我需要以一种简单的方式找到解决方案?复杂性不是什么大问题。 JavaScript中是否有类似于Java的Integer.bitCount的内置函数 我目前的做法如下 var binary = 3; var original = binary; var count = 0; while(binary>0) { binary = binary >> 1 << 1;

从其他搜索中,我发现这个问题被称为“汉明重量”或“人口计数”。有这么多的统计数据给出了很多答案? 我需要以一种简单的方式找到解决方案?复杂性不是什么大问题。 JavaScript中是否有类似于Java的Integer.bitCount的内置函数

我目前的做法如下

var binary = 3;
var original = binary;
var count = 0;
while(binary>0)
{
    binary = binary >> 1 << 1;
    if(original-binary==1)
        count++;
    original = binary >> 1;
    binary = original;
}
var二进制=3;
var原始=二进制;
var计数=0;
while(二进制>0)
{
二进制=二进制>>1>1;
二进制=原始;
}
有更好、更简单、更优雅的方法吗?

试试这个

var binary = 10;
var result = binary.toString(2); //Converts to binary
var count = result.split(1);//  count -1 is your answer
alert((result.split('1').length-1));
也可以写成

(binary.toString(2).split('1').length-1)

toString(2)  : helps to split it in a base2 format which is binary, can do this in a range of 2- 36 (iam not sure about the range) 

如果您想在二进制表示中计算1位数字,我们可以使用如下正则表达式

number.toString(2).匹配(/1/g).长度


不使用内置函数的简单方法:

function f(n){
    let i = 0;
    do if(n&1) ++i; while(n>>=1)
    return i;
}

// example:
console.log(f(7)); // 3

如果它真的是一个字符串,
str.split('1').length
,但这根本不是javascript,而是Javarelated to code review()@adeneo抱歉,错误的细节。我需要对一个数字执行此操作。然后是
numb.toString().split('1')。length
,tada!上述方法是否具有较高的时间复杂度?我应该选择哪一个?result.split(2)在这里做什么?是split(1)还是split('1')?