チェス盤がさまざまなビットボードに格納されている場合、最新のチェス エンジンは、特定のセルにどのタイプ/サイド ピースが配置されているかをどのように認識しますか? 特定のビットがどのタイプ/サイドピースであるかを調べるには、常に次のことを行う必要があるため、これに問題があります。
if((bit_check & occupied) == 0ULL) ... // empty
else if((bit_check & white) != 0ULL) // white
if((bit_check & white_pawns) != 0ULL) ... // white pawns
else if((bit_check & white_rooks) != 0ULL) ... // white rooks
....
else if((bit_check & white_kings) != 0ULL) ... // white kings
else if((bit_check & black) != 0ULL) // black
if((bit_check & black_pawns) != 0ULL) ... // black pawns
....
else if((bit_check) & black_kings) != 0ULL) ... // black kings
これは非常に面倒なプロセスであり、かなりの回数実行する必要があります (たとえば、何がキャプチャされているかを確認するための移動の生成中)。これをそのまま使用する必要があるのか 、それともPiece[64]
ピース型を本質的に格納する type の 64 配列を作成する方が速いのかはわかりません。
検索機能でキャプチャ分析を行うには、何百万回も実行する必要があることを考えると、どちらが良いでしょう。私はこれを間違っていますか?