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