一:加快哈希计算;二:减少哈希冲突
哈希表索引位置的计算hash(KEY) % 数组长度;当数组长度为2的n次方;这个公式等价于hash(KEY) & (length - 1);计算机底层就是0和1两个位的操作,显然&的速度会比%快;
为什么减少哈希冲突?看hash(KEY) & (length - 1);如果length为奇数,length - 1就为偶数,偶数最低位二进制是0;0和hash(KEY)的最低位做&操作只会是0;如果length为偶数,length - 1就为奇数,奇数最低位二进制是1;1和hash(KEY)的最低位做&操作是0或者1,多了一种可能。