我有一个哈希表,其键是64位值。表大小可以是不同长度的2的幂,例如2、4、8等等...我想要一个适用于这种情况的哈希表函数,即它具有最小的冲突。例如,如果我想要一个32的表大小,则哈希函数应该为64位输入产生0到31之间的值,并且具有最小的冲突。
我已经找到了32位输入的好解决方案,但还没有找到64位输入的解决方案。
对于32位键,我正在使用以下函数:
我已经找到了32位输入的好解决方案,但还没有找到64位输入的解决方案。
对于32位键,我正在使用以下函数:
#define hash32(x) ( (x) * 2654435761 )
unsigned int getHashKey( unsigned long x )
{
return hash32(x) >> ( 32 - h_bits );
}
有没有64位的hash32(x)等效方法,这将会很有趣。