length为2的整数次幂的话,h&(length-1)等价于 h%length-1 就相当于对length取模,这样便于保证散列的均匀,同时也提升了效率。
length为2的整数次幂的话,为偶数,length-1为奇数,保证了h&(length-1)二进制保证了最后一位可能是0,也可能是1。如果是奇数,那么h&(length-1)的最后一位只能为0,浪费了一般的空间。
因此取整数次幂是为了使不同的hash值发生碰撞的概率减小。
转载于:https://my.oschina.net/u/3938912/blog/3085091
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
QQ咨询|关于我们|Archiver|手机版|小黑屋|( 辽ICP备15012455号-4 ) Powered by 期权论坛 X3.2 © 2001-2016 期权工具网&期权论坛 Inc.
下载期权论坛手机APP