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

发布于 2024-12-09 01:37:37 字数 306 浏览 0 评论 0原文

可能的重复:
位旋转:找到下一个 2 的幂

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

例如,我收到数字 138,下一个 POT 数字是 256。

我收到数字 112,下一个 POT 是 128。

我需要做一个算法来计算

谢谢

Possible Duplicate:
bit twiddling: find next power of two

How to obtain the next Power Of Two of a given number?

For example, i receive the number 138, the next POT number is 256.

i receive the number 112, the next POT is 128.

I need to do an algorithm that calculates that

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

三生池水覆流年 2024-12-16 01:37:37

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

A really clever programmer would look at the java.lang.Integer.highestOneBit(int) method, and consider the left-shift operator (<<).

十年九夏 2024-12-16 01:37:37

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

  1. 1 作为 2 的第一个候选幂开始。
  2. 继续将候选数向左移动一位,直到大于或等于目标数。

Here is a very simple algorithm (since this is homework, you'll have to code it up yourself):

  1. Start with 1 as the first candidate power of two.
  2. Keep shifting the candidate number by one bit to the left until it's greater than, or equal to, the target number.
厌倦 2024-12-16 01:37:37

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

Assuming the input is a positive integer, one unconventional solution would be to look at the bit pattern of the number. Find the first '1' from the left, then think about the value of the bit to the left of that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文