jdk1.7 Hashmap 移位计算幂次方原理
2021-07-30 14:40:19 0 举报
hashmap 计算容量时采用移位加位运算的方式实现幂等算法
作者其他创作
大纲/内容
0
1
31
上面右移4位后为结果为 0 ,所以大于4位的右移均为 0
同 i = i | (i >> 1)
i |= (i >> 8)
i >> 4
highestOneBit(int i)
13
省略: 同上
i |= (i >> 2)
27
i |= (i >> 16)
i |= (i >> 4)
i |= (i >> 1)
7
i |= (i >> 4)
i = i - (i >>> 1)
i >>> 1
i |= (i >> 2)
i >> 2
最终结果:10737418242 ^ 30
i >> 1
同 i = i | (i >> 8)
同 i = i | (i >> 2)
i |= (i >> 1)
同 i = i | (i >> 4)
最终结果:i = 31 - 15 = 16
同 i = i | (i >> 16)
15
i |= (i >> 8)
| 或运算(两个位都为0时,结果才为0)
收藏
0 条评论
下一页