哈希8字节通常是以有效随机顺序提升到唯一8字节整数的指针?

时间:2013-03-20 16:11:03

标签: c hash

首先是一点背景,我试图在数据结构中存储一堆指针,我想查找值。我不关心有序访问。我想将结构存储在树中以便查找,但是malloc倾向于产生顺序地址,这会导致简单树的病态行为。我知道我可以将指针存储在某种自平衡树中,但是我没有一个库可以为我实现。香草C在这里。所以我想要做的是混合我想要存储的指针的位,这样我就可以实现一个简单的树并避免病态的情况。

我需要能够很好地混合这些位的东西,因为最高位可能都是相同的,最低位通常是页面对齐的,所以底部位通常是空的。

任何能够在没有大量开销的情况下产生良好混合的好方案?

1 个答案:

答案 0 :(得分:1)

乘以一个大的奇数值就足够了:(uintptr_t) ptr * 0xcba9876543210fed。唯一输入值的图像是唯一的Sun Tzu Theorem

我邀请其他人评论乘数和替代品的选择。