2016-09-18 77 views
0

有沒有一種方法可以設計一個散列,使某些鍵的子集有意映射到相同的值(衝突)?散列 - 目的衝突

例如,如果我希望所有(popcount> = 4)一些64位INT A的子集被映射到X,和相同的對於B映射到Y,等

我想我可以節省一些記憶,如果我只有足夠的鑰匙由於碰撞。

回答

0

使用模運算,並通過一套HASHKEYS的大小將您的64位值,像這樣:

hashKey = _64BitValue mod popcount 

我不知道你正在使用什麼語言,但許多現代語言使用%作爲模數運算符,有些使用「mod」。

例如,在Java它看起來像:

long hashKey = _64BitValue % popcount; 

這將均勻地分佈在你的鑰匙隨機分配的64位值。