原文:为什么要先高16位异或低16位再取模运算

我们知道,n代表的是table的长度length,之前一再强调,表table的长度需要取 的整数次幂,就是为了这里等价这里进行取模运算时的方便 取模运算转化成位运算公式:a n 等价于 a amp n ,而 amp 操作比 操作具有更高的效率。 当length n时, length 正好相当于一个 低位掩码 , 与 操作的结果就是散列值的高位全部归零,只保留低位,用来做数组下标访问: 可以看到,当 ...

2019-05-17 01:25 0 979 推荐指数:

查看详情

hashmap的hash方法为什么需要让16参与运算的原因

原因:当数组的长度很短时,只有低位数的hashcode值能参与运算。而让16参与运算可以更好的均匀散列,减少碰撞,进一步降低hash冲突的几率。并且使得1616的信息都被保留了。 而在这里采用运算而不采用& ,| 运算的原因是 运算能更好的保留各部分的特征,如果采用 ...

Mon Jan 04 13:15:00 CST 2021 0 2395
运算运算

运算有三个特性: 0和任何数字或永远等于该数字,0^4=4 两个相同的数字或等于0,2^2=0 或满足交换律和结合律,例如a^b=b^a,(a^b)^c=a^(b^c) 所以在一个数组中,除了一个数字只出现过一次,而其他数字都出现过两次,则求解该数组中只出现过一次 ...

Sun Sep 26 06:18:00 CST 2021 0 109
运算(按位与、按位或、或)

按位与运算符(&) 参加运算的两个数,按二进制进行“与”运算运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按位与运算) 即 0 & 0= 0 ,0 & ...

Tue Jul 30 18:43:00 CST 2019 0 2078
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM