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

时间:2014-07-01 09:14:50

标签: javascript binary

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

是否有更好,更简单,更优雅的方式?

3 个答案:

答案 0 :(得分:3)

试试这个

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 :(得分:2)

如果你想在二进制表示中计算1位数,我们可以使用这样的正则表达式。

  

number.toString(2).match(/ 1 / g).length

答案 2 :(得分:0)

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

<resources>
    <string name="app_name">My13Application</string>
    <string name="app_name1">item1</string>
    <string name="app_name2">item2</string>
    <string name="app_name3">sub menu</string>
    <string name="app_name4">sub item1</string>
    <string name="app_name5">sub item2</string>
</resources>