Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 有计算或估计二进制整数位数的公式吗?_Javascript_Algorithm - Fatal编程技术网

Javascript 有计算或估计二进制整数位数的公式吗?

Javascript 有计算或估计二进制整数位数的公式吗?,javascript,algorithm,Javascript,Algorithm,例如:基数10(999)=>3位===基数2(11111 00111)=>10位 我目前正在使用一个表来进行此估计,但它在base10中仍然被限制为15位,因为在JS中,我们仍然被MAX_SAFE_INTEGER阻止,下表是(运行代码段查看) 如何通过公式扩展此表,直到255位以10为基数 const-TDigits=document.querySelector(“#T-Digits-tbody”) ,MaxDigits=Number.MAX\u SAFE\u INTEGER.toString

例如:基数10(999)=>3位===基数2(11111 00111)=>10位

我目前正在使用一个表来进行此估计,但它在base10中仍然被限制为15位,因为在JS中,我们仍然被MAX_SAFE_INTEGER阻止,下表是(运行代码段查看)

如何通过公式扩展此表,直到255位以10为基数

const-TDigits=document.querySelector(“#T-Digits-tbody”)
,MaxDigits=Number.MAX\u SAFE\u INTEGER.toString().length
;
变量x9='9';
对于(设n=1;n
表{margin:1em}
表THAD{背景色:cadetblue}
表td{文本对齐:中间;填充:.2em.5em;边框底部:1px纯灰}

对应的最大位数
基准10基准2原木
0 11
var n=123;
console.log(n,(n>>>0.toString(2));
var nb=数学楼层(数学对数2(n))+1;
控制台日志(nb)
(n=1;n<256;n+=1){
console.log(n,Math.ceil(Math.log2(Math.pow(10,n)));

}
Math.log2
应该可以it@JaromandaX可能是
Math.ceil(Math.log2(n))
,但请注意JavaScript中的数字总是浮点数,因此超过54位的真实情况更复杂。我对对数不是很在行,你能给我一个有用的公式吗,它对255位有用吗?@Pointy,我想
Math.ceil(Math.log2(n+1))
例如,Math.log2(16)是4-但你需要5个数字我是一个活生生的呼吸“1”错误体现这很好,但在我的问题中,
n
是以10为基数使用的位数,而不是它的整数值可能不准确,因为“1”是一位数字,也是“9”,但“1”是“1”,而“9”是“1001”,因此您需要有关数据的更多信息。此计算有助于我估计欧几里德除法中的最大循环数(我有另一个更快的六边形演算版本)参见=>
 ⌊log2(n)⌋ + 1