为了账号安全,请及时绑定邮箱和手机立即绑定

是否有计算或估计二进制整数位数的公式?

是否有计算或估计二进制整数位数的公式?

四季花海 2021-06-16 17:01:35
例如:基数 10(999) => 3 位数字 === 基数 2(1111100111) => 10 位数字我目前正在使用一个表来进行这个估计,但它仍然限制在 base10 中的 15 位数字,因为在 JS 下我们仍然被 MAX_SAFE_INTEGER 阻止是下表(运行代码段查看它)。如何通过公式扩展此表,直到基数为 10 的 255 位数字?const TDigits   = document.querySelector('#T-Digits tbody'),     MaxDigits = Number.MAX_SAFE_INTEGER.toString().length;var x9 = '9';for (let n=1; n < MaxDigits; n++){  let newRow = TDigits.insertRow(-1)  newRow.insertCell(0).textContent = n  newRow.insertCell(1).textContent = (x9-0).toString(2).length  newRow.insertCell(2).textContent = Math.ceil(Math.log2(Math.pow(10,n)))    x9 += '9';}table { margin:1em}table thead { background-color: cadetblue }table td { text-align: center; padding: .2em .5em; border-bottom: 1px solid grey }<table id="T-Digits">  <caption>Max digits corresponding</caption>  <thead>    <tr><td>base 10</td> <td>base 2</td><td> log </td></tr>  </thead>  <tbody>      <tr><td>0</td> <td>1</td><td>1</td></tr>  </tbody></table>
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

for (n = 1; n < 256; n +=1 ) {

    console.log(n, Math.ceil(Math.log2(Math.pow(10,n))));

}

据我所知,这些值匹配


查看完整回答
反对 回复 2021-06-18
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

 ⌊log2(n)⌋ + 1

var n = 123;

console.log(n, (n >>> 0).toString(2) );

var nb = Math.floor( Math.log2(n) ) + 1;

console.log( nb );


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信