javascript - 如何在数字的二进制表示中找到 1 的个数?

标签 javascript binary

从其他搜索中,我发现这个问题被称为“汉明权重”或“人口计数”。有这么多的统计数据给出了很多答案? 我需要以简单的方式找到解决方案吗?复杂性不是什么大问题。 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 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) 

关于javascript - 如何在数字的二进制表示中找到 1 的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506555/

相关文章:

javascript - 为什么 JavaScript 上的 for 循环比模式匹配更糟糕?

c - C语言中的位选择

c# - FtpWeb 请求错误 : 550 Size not allowed in ASCII mode

python - 将二进制字符串 (ASCII) 转换为二进制文件

php - 将 Disqus 用于站点上的 'Single Sign-On'

javascript - 替换 youtube iframe src 会破坏自动播放

javascript - Firefox:在地址栏中强制全部大写

javascript - collection_radio_buttons 自动提交?

TFS 和存储二进制文件

mysql - 在 Laravel 中存储 32 位二进制文​​件的正确方法