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

时间:2011-10-07 10:12:00

标签: java language-agnostic bit-manipulation

  

可能重复:
  bit twiddling: find next power of two

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

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

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

我需要做一个计算

的算法

由于

3 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:5)

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