我寫一個程序,我不得不對數字之間的距離存儲在一個哈希表。 我將給出一個範圍R.比方說的範圍是5 現在我必須找到以下對之間的距離:結合兩個整數位與移
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
即,對總數爲(R ^2分之2 -R)。我想將它存儲在一個哈希表中。所有這些都是無符號整數。所以有32位。我的想法是,我取一個無符號長整型(64位)。
可以說,我需要散列1和5.Now
long k = 1;
k = k<<31;
k+=5;
之間的距離由於我有64位,我存儲在所述第一31位的第一數目和第二31位的第二數目。這保證了可以用於散列的唯一鍵。
,但是當我這樣做:
long k = 2;
k << 31;
k+= 2;
k的值變爲零。
我不能環繞此轉移概念我的頭。
本質上講我想acheive是,
An unsigned long has | 32bits | 32 bits |
Store |1st integer|2nd integer|
我怎樣才能達致這讓唯一鍵的每對?
語言:C 我正在運行在64位的AMD Opteron處理器的代碼。 sizeof(ulong)返回8.所以它是64位。在這種情況下我需要很長時間嗎?
此外,我需要知道,如果這將創造獨特的鑰匙?根據我的理解,它似乎創建了唯一的密鑰。但我想要確認。
請將相關的語言標籤添加到您的問題。 – 2012-04-09 19:18:57
另外,如果你想要第一個整數在前32位,你爲什麼要移動31? – 2012-04-09 19:19:26
我也試過32。結果爲0.所以我認爲我太多地移動了一個,並且嘗試了31.猜測32是正確的,然後 – 2012-04-09 21:16:44