相关疑难解决方法(0)

.Net GetHashcode位移操作

我昨天查看了一些.net源代码,看到了GetHashcode的几个实现,其中包含以下内容:

(i1 << 5) + i ^ i2
Run Code Online (Sandbox Code Playgroud)

我理解代码在做什么以及为什么.我想知道的是为什么他们使用(i1 << 5)+ i代替(i1 << 5)- i.

我见过的大多数框架都使用-i,因为它相当于乘以31这是素数,但是微软的方式相当于乘以33,它有11和3作为因子,因此不是素数.

这有什么理由吗?有任何合理的假设吗?

.net hashcode bit-shift

12
推荐指数
1
解决办法
520
查看次数

标签 统计

.net ×1

bit-shift ×1

hashcode ×1