Hashing (cont)
hash_any() gives hash value as 32-bit quantity (uint32 ).
Two ways to map raw hash value into a page address:
- if b = 2k, bitwise AND with k low-order bits set to one
uint32 hashToPageNum(uint32 hval) {
uint32 mask = 0xFFFFFFFF;
return (hval & (mask >> (32-k)));
}
|
- otherwise, use mod to produce value in range 0..b-1
uint32 hashToPageNum(uint32 hval) {
return (hval % b);
}
|
|