Chinaunix首页 | 论坛 | 博客
  • 博客访问: 757880
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-17 14:32
个人简介

小公司研发总监,既当司令也当兵!

文章分类

全部博文(144)

分类: LINUX

2019-08-22 17:15:30

常用的hash常量 

点击(此处)折叠或打开

  1. magic = 0x9e370001; // 2654404609

是怎么得来的呢?

在hash散列过程中,通常用基于表项的索引,乘一个适当的大数,于是结果溢出,就把保留下来的32位结果,作为模数操作的结果(hash 值)。Knuth建议,要得到一个理想的结果(任意一个32位内的整数集合,hash后的hash 值比较均衡的分布,冲突概率最小),这个数就应该接近黄金分割数的一个素数。这里,2654404609就是最接近 

点击(此处)折叠或打开

  1. 2^32 * (sqrt(5) - 1) / 2
的一个素数, 这个数可以方便的通过加法和位移运算得到:

点击(此处)折叠或打开

  1. 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1

阅读(5212) | 评论(0) | 转发(0) |
0

上一篇:dns报文解析

下一篇:IP 头部

给主人留下些什么吧!~~