最接近的整数值为20

And*_*Dev 6 java division

如果我的数字大于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.这些是来自摄像机的典型图像尺寸.

arn*_*e.b 5

如果您的输入数字是x,我认为您想要x/2^[(log x/14)/log 2],假设您希望目标号码在区间内[14,27].

在Java代码中Mathlog功能就会派上用场(虽然基2对数就更好了),而且你还需要一个整数投(或以某种方式找到最大的整数比表达更小[]).

这是做什么的:让我们x作为您的输入并y成为您想要找到的数字.然后,x=y*2^n对于尚未知n,虽然y是20左右(见上文).显然,n是2的对数的基数x/y.现在,如果你选择尽可能小的y,调用它y',base-2对数的整数部分x/y'仍然是n我们正在寻找的,除非因为大于2的因子而x/y'不同x/y,假设重复除以2它不能.因此,我们有n,因此y=x/2^n.

  • 请解释你的公式 (2认同)
  • 是的,请做.我想知道上升选民是否理解这个公式,或者只是想"嗯,看起来很聪明!". (2认同)