[prev] 23 [next]

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);
    }