javascript 有没有可能将这个while循环表示为数学方程?[关闭]

zqdjd7g9  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(154)

已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。

3天前关闭。
这篇文章是昨天编辑并提交审查的。
Improve this question
下面是JavaScript代码:

function bitlen(D, i){ 
      let num = 0, d = 0;
      while(num + Math.pow(2, d+D) <= i){ 
        d += D; 
        num += Math.pow(2, d);
      }
      return d+D;
    }

如果我能简化这个过程,那就太好了,但我不确定如何简化。
可以用数学吗?
我试着问ChatGPT,它不知道它在说什么。
我尝试使用Math.log2,但不确定如何正确地应用它,每次都得到相同的答案。
编辑:更多关于代码的用途..
该代码用于查找输入uint i的有效位数,但四舍五入为uint D的倍数。
例如:bitlen(3, 7):7可以容纳在3位111内,因此输出为3,但是,bitlen(3, 8):8不能放入3位,因此输出为6。
希望这能让你更容易理解

vdzxcuhz

vdzxcuhz1#

你可以这样重写

function bitlen(D, i) {
  return Math.ceil(Math.log2(i + 1) / D) * D;
}

相关问题