【发布时间】:2021-08-04 10:09:33
【问题描述】:
在question 中关于一个名为 djb2 的非常简单的散列算法,作者想知道为什么在算法中选择了数字 33(参见下面的 C 代码)。
unsigned long;
hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++) //just the character
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
在最佳答案中,第 2 点谈到了散列累加器以及它如何制作自己的两个副本,然后它谈到了传播。
有人能解释一下“复制自己”和答案2的“传播”是什么意思吗?
【问题讨论】:
标签: c++ c hash bit-manipulation bit-shift