できれば手っ取り早い方法。ケースは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以下に保ち、の上位ビットの順序も維持します。