【发布时间】:2013-01-01 21:16:56
【问题描述】:
我想编写可扩展的散列。在wiki 上,我在 python 中找到了很好的实现。但是这段代码使用了最低有效位,所以当我有哈希 1101 时,d = 1 的值是 1,d = 2 的值是 01。我想使用最高有效位。例如:哈希1101,d = 1 值为1,d = 2 值为11。有什么简单的方法可以做到这一点吗?我试过了,但我做不到。
你明白为什么它使用最低有效位吗?
或多或少。当我们使用数组时,它会变得高效。好的,所以对于哈希函数,我想使用 4 字节整数中的四个最小位,但从左到右。
h = hash(k)
h = h & 0xf #use mask to get four least bits
p = self.pp[ h >> ( 4 - GD)]
它不起作用,我不知道为什么。
【问题讨论】:
-
您说您已经尝试过 - 发布代码,以便我们查看您哪里出错了。
-
你明白为什么它使用最低有效位吗?
-
当你说你想要最高有效位时,你想将其限制为特定大小的整数,还是最高的非零位?例如,8 位数字的最高有效四位是 15(又名
00001111)0000还是1111?前者很容易计算,后者不太容易计算(可能需要log)。 -
“但从左到右”和“最少位”是什么意思?
GD是什么?为什么你关心使用一些四位而不是任何其他四位?如果你的哈希函数好的话,它实际上是一个随机数,无论你选择哪四位,它仍然是一个随机数。