首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求2的最接近上幂指数的快速方法

求2的最接近上幂指数的快速方法
EN

Stack Overflow用户
提问于 2011-03-09 15:17:17
回答 9查看 18.6K关注 0票数 23

如果我有一个数字a,我想要x在b=2^x中的值,其中b是2的下一个大于a的幂。

如果您错过了标记,这是Java,而a是一个int。我正在寻找最快的方法来做这件事。到目前为止,我的解决方案是使用位旋转来获得b,然后是do (int)(log(b)/log(2)),但我觉得必须有一种更快的方法,不需要将两个浮点数相除。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-03-09 15:25:14

a == 0 ? 0 : 32 - Integer.numberOfLeadingZeros(a - 1)呢?这完全避免了浮点。如果您知道a从不为0,则可以省略第一部分。

票数 36
EN

Stack Overflow用户

发布于 2012-08-02 05:22:09

如果有人正在寻找Andy提到的一些“微不足道”的代码,它可能是这样的:(如果人们有更好的方法,你应该分享!)

代码语言:javascript
复制
    public static int nextPowerOf2(final int a)
    {
        int b = 1;
        while (b < a)
        {
            b = b << 1;
        }
        return b;
    }
票数 14
EN

Stack Overflow用户

发布于 2017-10-10 18:24:24

不一定更快,但只有一行代码:

代码语言:javascript
复制
int nextPowerOf2(int num)
{
    return num == 1 ? 1 : Integer.highestOneBit(num - 1) * 2;
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5242533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档