hashmap中的tableSizeFor(int)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:03   5341   0
static final int tableSizeFor(int cap) {
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }

这个函数的功能是:输入一个数,求出与之最近的2次幂的整数,比如输入5,会输出8

cap=0101

n=0100

无符号右移1位0010 经过异或运算后---》0110

无符号右移2位0001 经过异或运算后--》0111

无符号右移4位 0000 经过异或运算后-》》0111

。。。。

最后经过右移和异或运算后得出来是0111

最后+1 得1000=8

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP