DEV Community

Zaw Htut Win
Zaw Htut Win

Posted on

HashMap(Bit Mixing)(Burmese)

h က ဒါရှိတယ်ထားပါတော့

h = 10101011 11001101 00010010 00110100
      high 16 bits       low 16 bits
Enter fullscreen mode Exit fullscreen mode

unsigned shift operation ကို 16 bits စာ ဘယ်ဘက်ကို ဆင်းခိုင်းလိုက်ရင် ရှေ့က bit တွေ အကုန် 0 ဖြစ်ကုန်မယ်။ ထိပ်က value တွေက lower bits တွေကို အစားထိုးသွားမယ်။

h >>> 16 = 00000000 00000000 10101011 11001101
Enter fullscreen mode Exit fullscreen mode

အဲ.. ရလာတဲ့ အဲဒီ shifted high bits တွေကိုမှ နဂိုမူလ h ထဲမှာ ရှိတဲ့ bit တွေနဲ့ mix လုပ်တာပါ။

နဂို 

h = 10101011 11001101 00010010 00110100'

ဘယ်ဘက် 16 bit ဆင်းပြီး

h >>> 16 = 00000000 00000000 10101011 11001101
Enter fullscreen mode Exit fullscreen mode

သူတို့ နှစ်ခုကို XOR operation နဲ့ ရောလိုက်တာ။

h ^ h>>>16

Original: 1010101111001101 0001001000110100
Shifted:  0000000000000000 1010101111001101
-------------------------------------------
Result:   1010101111001101 1011100111111101
Enter fullscreen mode Exit fullscreen mode

ဒီတော့ ပြောချင်တာက နဂို h ရဲ့ high bits တွေကို အနောက်ကို ပို့ပစ်လိုက်တယ်။ အဲဒီမှာ ရှေ့က bits(higher bits တွေ 0 ဖြစ်သွားတယ်။)
ပြီးတော့မှ အရှေ့ရော အနောက်ရောက bits တွေကို XOR operation နဲ့ ပြန်ထုတ်တယ်။ ဒါကတော့ HashMap မှာ index ထုတ်ဖို့ Bit Mixing လုပ်တာကို ရှင်းပြတာဖြစ်ပါတယ်။ နောက်တစ်ခန်းမှာတော့ Bucket တွေအကြောင်ပြောပြပါ့မယ်။

Top comments (0)