できれば手っ取り早い方法。ケースはN = 2^b
とても簡単です。そのために、最初に、選択したタイプのビット数を把握します。
typedef unsigned int type;
size_t size = sizeof(type) * 8;
次に、適切なビット数だけ右シフトを実行して、上位b
ビットのハッシュキーを生成します。
type input = 0x657;
unsigned char b = 4;
unsigned char hash = input >> (size - b);
しかし、私が欲しかったらどうしN = 3
ますか?または他の2の累乗ではありませんか?N
私が常に(最大で256になる)の中に収まると仮定すると、いくつかunsigned char
をハッシュする最も速い方法は何でしょうかinput
?input
上記の関数のように、バケットの範囲の差を+/- 1以下に保ち、の上位ビットの順序も維持します。