3

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

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

4

2 回答 2

9

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
于 2012-11-02T02:42:00.277 回答
3

在 32 位世界中

17612864 = 00000001 00001100 11000000 01000000(二进制)

前十四位 = 00000001 000011 = 67

于 2012-11-02T02:42:32.580 回答