给定一个数,找到大于这个数的最小的2的n次幂

这两天在看HashMap源码,看到里面有一个算法,当程序员构造hashmap如果给定的hashmap容量不是2的n次幂的时候,应该给它一个大于这个数且最小的2的n次幂。看到源码里面的代码,顿时感觉惊为天人。 很是佩服那些写开发语言底层库的工程师们。

说不定以后工作会遇到这种需求:

1.  |=  :是按位或并赋值的意思。

2.  >>>  :表示不带符号向右移动二进制数,移动后前面统统补0。

public int MIN_POWER_TWO(int cap) {
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return n + 1;
    }

猜你喜欢

转载自www.cnblogs.com/songjinzhao/p/11583421.html
今日推荐