gpt4 book ai didi

java - 最接近 20 的整数值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:33 25 4
gpt4 key购买 nike

如果我有一个大于 20 但可以除以 2 且没有余数的数字,我想确定哪个数字最接近 20。例如:

对于 2048,除以 2 足够多的次数会使我得到 16,这是我能得到的最接近 20 的数字。如果数字是 800,最接近的是 25。

我可以编写一个循环,不断划分和比较范围,然后选择最接近的值。是否有更简单的方法,可能是通过移位位?

编辑:当我说它被 2 整除时,我的意思是它也一直被除以 2。 70 的数字只会平均分配到 35。像 2048 或 1024 这样的数字将一直整除到 2。

样本编号:2048、1920、1600、1536、1080..640、352、320、176。这些是相机的典型图像尺寸。

最佳答案

如果你输入的数字是x,我想你想要x/2^[(log x/14)/log 2],假设你想要你的目标数字在 [14,27] 区间内。

在 java 代码中,Mathlog 函数会派上用场(尽管以 2 为底的对数会更好),您还需要一个整数转换(或者以某种方式找到小于 [] 中的表达式的最大整数)。

这是做什么的:设 x 为您的输入,y 为您要查找的数字。然后,x=y*2^n 表示未知的 n,而 y 约为 20(见上文)。显然,nx/y 的以 2 为底的对数。现在,如果您选择可能的最小 y,将其称为 y'x/y' 的以 2 为底的对数的整数部分仍然是我们正在寻找的 n,除非 x/y'x/y 相差超过 2,这由假设重复除以 2 它不能。因此,我们有 n,因此有 y=x/2^n

关于java - 最接近 20 的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com