分かってる事かもしれないけど、一応書いておきます・・・

struct Hash { // 局面表に登録する情報
   unsigned __int64 key; // ハッシュ値
   int depth;
   int value;
   Move best;
   ...
};

登録する場所、
Hash hash;
....
hash.key = getHashKey();
hash_table[ hash.key & HASH_SIZE ] = hash; // 登録する場所は、 key & ハッシュ表の大きさ

if(hash_table[ hash.key & HASH_SIZE] != NULL && // 既に何かが登録されてる
 hash_table[ hash.key & HASH_SIZE].key != hash.key) // キーが違うので同一局面ではないだろう。。。
 // 再ハッシュして登録