algorithm - 为什么17612864的高14位是67?

标签 algorithm computation-theory clrs

在 CLRS 的第 264 页底部,作者说在获得 r0 = 17612864 后,r0 的 14 个最高有效位产生哈希值 h (k) = 67。我不明白为什么它给出 67,因为 67 在二进制中是 1000011,即 7 位。

编辑 在课本中: 例如,假设我们有 k = 123456、p = 14、m = 2^14 = 16384 和 w = 32。采纳 Knuth 的建议,我们选择 A 为 s/2^32 形式中最接近 (\sqrt(5) - 1)/2 的分数,因此A = 2654435769/2^32。然后 k*s = 327706022297664 = (76300 * 2^32) + 17612864,所以 r1 = 76300 和 r0 = 17612864r0 的 14 个最高有效位产生值 h(k)=67

最佳答案

17612864 = 0x010CC040 =

0000 0001 0000 1100 1100 0000 0100 0000

其中的最高 14 位是

0000 0001 0000 11

也就是0x43,也就是67

还有:

int32 input = 17612864;
int32 output = input >> (32-14); //67

关于algorithm - 为什么17612864的高14位是67?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13188468/

相关文章:

algorithm - 了解 CLRS 上的通用哈希章节

java - 求和算法的幂

algorithm - 在对数时间内计算任何子串的散列

三进制计算机与其他基于二进制的算法分析,4th based 5th based

regular-language - a*b* 是常规的吗?

algorithm - 我们能否使用循环不变量来证明算法的正确性,在循环不变量中我们证明它在第一次迭代之后而不是之前为真?

algorithm - 堆排序在 MATLAB 上应该很慢吗?

algorithm - 将一个字符串转换为最短路径中的另一个字符串

c++ - C++ 中的多态递归调用?

regex - 简化正则表达式,[star] 神秘消失