从其他搜索中,我发现这个问题被称为“汉明权重”或“人口计数”。这么多的统计数据已经给出了很多答案吗?
我需要以简单的方式找到解决方案吗?复杂性并不是什么大问题。
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;
}
有没有更好、更简单、更优雅的方法呢?
try this
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)