int ELFHash(char *str)
{
unsigned int h = 0, g;
while (*str) {
h = (h << 4) + *str++; //将当前字符的高4位加到哈希值的最低4位,低4位放在左移后哈希传值的低4位
if ((g = h & 0xF0000000) != 0) {
/*最前面的4位非零表示多于7个字符*/
h ^= (g >> 24); //这句只会修改h的第5-8位,因为h是无符号的,左移操作是逻辑移位,如果h定义为有符号的,就是算术移位
h &= ~g;//将h的高4位清零
}
}
return h &0x7fffffff;
}
ELFHash的理解
最新推荐文章于 2020-03-10 17:37:59 发布
本文详细解析了一种高效的哈希算法——ELFHash,该算法通过巧妙地利用位运算和移位操作来实现字符串的哈希值计算。它能够快速处理长字符串,并且在保持较低冲突率的同时,确保了哈希值的均匀分布。通过深入探讨其内部工作原理,读者可以更好地理解哈希算法的设计思路和优化技巧。
1953

被折叠的 条评论
为什么被折叠?



