Java 如何求给定数的二次幂?

Java 如何求给定数的二次幂?,java,language-agnostic,bit-manipulation,Java,Language Agnostic,Bit Manipulation,可能重复: 如何求给定数的二次幂 例如,我收到的号码是138,下一个号码是256 我收到号码112,下一个号码是128 我需要做一个算法来计算 谢谢假设输入是正整数,一个非常规的解决方案是查看数字的位模式。从左边找到第一个“1”,然后考虑其左边位的值。这里有一个非常简单的算法(因为这是家庭作业,你必须自己编写): 以1作为2的第一个候选幂开始 将候选编号向左移动一位,直到其大于或等于目标编号 一个真正聪明的程序员会看 java .Lang.Tyn.HeisteNoBIT(int)< /C>方法

可能重复:

如何求给定数的二次幂

例如,我收到的号码是138,下一个号码是256

我收到号码112,下一个号码是128

我需要做一个算法来计算


谢谢

假设输入是正整数,一个非常规的解决方案是查看数字的位模式。从左边找到第一个“1”,然后考虑其左边位的值。

这里有一个非常简单的算法(因为这是家庭作业,你必须自己编写):

  • 1
    作为2的第一个候选幂开始
  • 将候选编号向左移动一位,直到其大于或等于目标编号

  • 一个真正聪明的程序员会看<代码> java .Lang.Tyn.HeisteNoBIT(int)< /C>方法,并考虑左移位操作符。(

    这是家庭作业,不是吗?你必须这样标记家庭作业。为什么256而不是128是112的下一个POT?你能解释一下怎么做吗?+1;不知道这个方法存在!缺少一个具体的公式。假设128的下一次幂是128,那么
    Math.max(1,Integer.highestOneBit(i-1)呢)