这是一种哈希算法。
计算太麻烦了,完全违背了哈希计算的简便要求!
又是移位,又是循环判断。
while(*key)//遍历字符串
{ h=(h<<4)+*key++;//把h左移4位加上该字符付给h
unsigned long g=h&0Xf0000000L;
//取h的高四位付给g
if(g) h^=g>>24;//如果g不为0,让h和g的高八位异或再付给h
h&=~g;//对g取反并与h相与付给h
}
return h%MOD; //得到哈希值
这是一种哈希算法。
计算太麻烦了,完全违背了哈希计算的简便要求!
又是移位,又是循环判断。
while(*key)//遍历字符串
{ h=(h<<4)+*key++;//把h左移4位加上该字符付给h
unsigned long g=h&0Xf0000000L;
//取h的高四位付给g
if(g) h^=g>>24;//如果g不为0,让h和g的高八位异或再付给h
h&=~g;//对g取反并与h相与付给h
}
return h%MOD; //得到哈希值