2014-09-06 67 views
-1

我要實現這個散列函數哈希功能 - 右shifitng

「H(K)=((A * K)*模(2^32))RSH(32-R)」。

其中rsh(32-r)是右移一個數字。我該如何做這個正確的轉變。我很困惑,因爲我不知道有多少次它會正確地轉移數字?也沒有在我的PDF中提到。而且表格大小= m = 2^r。因此r = logm。 **必須使用此散列函數。

+0

http://www.cprogramming.com/tutorial/bitwise_operators.html – druckermanly 2014-09-06 09:00:32

+0

它將被轉移32 - R的地方 – 2014-09-06 09:02:35

+0

有在C++中,這將有助於我的任何代碼out @MarcoA。 ? – rayan 2014-09-06 09:04:21

回答

0

這裏等價功能:

uint32_t rsh(uint32_t num, uint8_t pad) { 
    return num >> pad; 
} 

h = rsh((A*k)*mod(2^32), 32 - r); 
+0

得到它的感謝! – rayan 2014-09-06 09:11:41