シフト演算が必要なのは、負の整数の場合が
あと、問題のサイズによってはハッシュの速度も気になるなあと