Javascript 如何从二进制整数中获取百分比,每一位代表x百分比?
我有一个10位的二进制位图。每一位代表10%。是否有任何简单的数学函数可以从位图中获取百分比之和 样品Javascript 如何从二进制整数中获取百分比,每一位代表x百分比?,javascript,bit-manipulation,Javascript,Bit Manipulation,我有一个10位的二进制位图。每一位代表10%。是否有任何简单的数学函数可以从位图中获取百分比之和 样品 0000000000 = 0% 0000000001 = 10% 1000000000 = 10% 0000100000 = 10% 1000000001 = 20% 0000000011 = 20% 0000110000 = 20% 0010000010 = 20% 1010000010 = 30% 请注意,这只是一个如何激活位的示例。我的数字实际上是一个整数,如0,1到1023。使
0000000000 = 0%
0000000001 = 10%
1000000000 = 10%
0000100000 = 10%
1000000001 = 20%
0000000011 = 20%
0000110000 = 20%
0010000010 = 20%
1010000010 = 30%
请注意,这只是一个如何激活位的示例。我的数字实际上是一个整数,如0,1到1023。使用循环:
function count_1bits(n, bitsize) {
var count = 0;
for (var i = 0; i < bitsize; i++) {
count += (n & 1); // test low-order bit
n >>= 1; // shift number down 1 bit
}
return count;
}
var pct = count_1bits(bitmap, 10)*100;
function count1bit(n,位大小){
var计数=0;
对于(变量i=0;i>=1;//将数字下移1位
}
返回计数;
}
var pct=计数(位图,10)*100;
您可以使用如下函数计算位,然后只需乘以10即可得到百分比:
函数计数位(n,cnt){
如果(cnt==1)返回n&1;
var半=数学地板(cnt/2);
返回countBits(n>>half,cnt-half)+countBits(n,half);
}
n=1023;
文件写入(计数位(n,10)*10+'%')代码>您不必使用循环。你不必做数学。就这样做吧:
var编号=100010;
警报(number.toString().split(“1”).length-1);
//再深一点:
风险值2=1100100000;
警报((number2.toString().split(“1”).长度-1)*10+“%”)代码>尝试执行以下操作
x = '0000100011';
function binTopre(x) {
c = (x.match(/1/g)||[]).length;
return (c*10) + '%';
}
console.log(binTopre(x));//30%
所以您只想计算设置的位数?请参阅