如何获得给定数字的下一个2的幂?

Nul*_*ion 7 java language-agnostic bit-manipulation

可能重复:
bit twiddling:找到下一个2的幂

如何获得给定数字的下一个2的幂?

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

我收到112号,下一个POT是128.

我需要做一个计算它的算法

谢谢

Jef*_*igg 15

一个非常聪明的程序员会查看该java.lang.Integer.highestOneBit(int)方法,并考虑左移运算符(<<).

  • 缺少具体的公式.假设128的两个幂的下一个是128,那么`Math.max(1,Integer.highestOneBit(i - 1)<< 1)` (3认同)

NPE*_*NPE 6

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

  1. 1作为第一个候选力量的两个开始.
  2. 继续将候选编号向左移动一位,直到它大于或等于目标编号.


S.L*_*ica 5

假设输入是正整数,一个非传统的解决方案是查看数字的位模式.从左边找到第一个'1',然后考虑左边的位的值.