为什么17612864的14个最高位是67?

时间:2012-11-02 02:29:35

标签: 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, and w = 32。根据Knuth的建议,我们选择A作为最接近s/2^32的{​​{1}}形式的分数,以便(\sqrt(5) - 1) / 2。然后A = 2654435769/2^32,以及k*s = 327706022297664 = (76300 * 2^32) + 17612864r1 = 76300 and r0 = 17612864的14个最高有效位产生值r0

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

在32位世界中

17612864 = 00000001 00001100 11000000 01000000(二进制)

前14位= 00000001 000011 = 67