最佳答案
假设您有两个散列 H(A)
和 H(B)
,并希望将它们组合在一起。我曾经读到过将两个散列组合起来的一个好方法是使用 XOR
,例如 XOR( H(A), H(B) )
。
我找到的最好的解释是在这里简要地谈到这些 散列函数指导原则:
使用粗略随机分布对两个数进行 XORing 会导致另一个数仍然是粗略随机分布 * ,但是现在取决于这两个值。
...
* 在两个要合并的数字的每个位上,如果两个位相等,则输出0,否则输出1。换句话说,在50% 的组合中,将输出1。因此,如果两个输入位都有大约50-50的几率为0或1,那么输出位也是如此。
您能解释一下为什么 XOR 应该是组合散列函数(而不是 OR 或 AND 等)的默认操作背后的直觉和/或数学原理吗?