Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从二进制整数中获取百分比,每一位代表x百分比?_Javascript_Bit Manipulation - Fatal编程技术网

Javascript 如何从二进制整数中获取百分比,每一位代表x百分比?

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。使

我有一个10位的二进制位图。每一位代表10%。是否有任何简单的数学函数可以从位图中获取百分比之和

样品

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%

所以您只想计算设置的位数?请参阅