static int indexFor(int h, int length)
{
return h & (length-1);
}
- 我们在进行hash相关的计算操作时,经常会涉及到求模运算,如上面的算哈希映射位置的代码。
前提:length是一个2的幂次方整数,这样,length-1 的二进制就是一个形如“0000111…”的数,比如,如果length=4,length-1=3,其二进制表示为“0011”,如果length=8,length-1=7,其二进制表示为“0111”,以此类推。将h和length-1进行按位与运算的时候,由于高位都是0,只有低位的1才能决定最终的结果,就相当于对h进行相应数值(即length)的求模运算。