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