3

CLRS の 264 ページの下部で、著者は、 を取得した後r0 = 17612864、 の最上位 14 ビットがr0ハッシュ値 を生成すると述べていますh(k) = 671000011バイナリの67は7ビットなので、なぜ67になるのかわかりません。

編集 教科書では: 例として、 があるとします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

どれが どれ0x4367

また:

int32 input = 17612864;
int32 output = input >> (32-14); //67
于 2012-11-02T02:42:00.277 に答える
3

32ビットの世界で

17612864 = 00000001 00001100 11000000 01000000 (バイナリ)

上位 14 ビット = 00000001 000011 = 67

于 2012-11-02T02:42:32.580 に答える