给定一个整数,返回大于此整数的最小2的冥次数

2018-06-08  本文已影响0人  zhuangzi

给定一个整数,返回大于等于此整数的最小2的冥次数,如cap=10,则返回16。

int MAX_CAPACITY = 1<<30;

int tableSizeFor(int cap) {

    int n = cap -1;//如果不减1,会出现cap等于2的冥次数时返回此冥次数x2,比如cap=8,返回16

    n |= n >>>1;

    n |= n >>>2;

    n |= n >>>4;

    n |= n >>>8;

    n |= n >>>16;

    return (n <0) ?1 : (n >=MAX_ CAPACITY) ?MAX_ CAPACITY : n +1;

}
上一篇下一篇

猜你喜欢

热点阅读