这两天在看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; }