gpt4 book ai didi

c# - 为什么 ORing 两个整数被认为是一个好的哈希函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:22 24 4
gpt4 key购买 nike

我的一本 C# 书籍(C# 3.0 Cookbook by Hillyard and Teilhet)给出了一个 Square 类的例子,写了 GetHashCode 作为

public override int GetHashCode ( ) 
{
return this.Height.GetHashCode() | this.Width.GetHashCode();
}

我想知道为什么这被认为是一个好的哈希码。因为 | 操作的表是

x | y | x OR y
--------------
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 1

这意味着有 3/4 的时间运算结果是 1。所以如果你有杂项 ints w, x, y, z 这意味着 w | x == y | z 并没有尽可能小(例如,如果使用了 ^)。

我的理解是否正确?或者是否有充分的理由将 | 用于哈希函数?

最佳答案

那是一个可怕的、可怕的散列函数,正是因为你提到的原因。肯定是一个错误(或者你应该找一本新书!)。您应该将其提交到本书的勘误表页面:

http://www.oreilly.com/catalog/errata.csp?isbn=9780596516109

关于c# - 为什么 ORing 两个整数被认为是一个好的哈希函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35967215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com