4

一部のビットボード チェス エンジンでは、駒のビットボードは次のように初期化されます。

white_pawns = 0x000000000000ff00
black_pawns = 0x00ff000000000000
white_knights = 0x000000000000042
black_knights = 0x4200000000000000
white_bishops =0x000000000000024
black_bishops = 0x2400000000000000
white_rooks = 0x000000000000081
black_rooks = 0x8100000000000000
white_queens = 0x0000000000000008
black_queens = 0x0800000000000000
white_king = 0x0000000000000010
black_king = 0x1000000000000000

これらの部分がそれぞれの16進数値を取得する方法を誰か説明してもらえますか?

4

1 に答える 1

3

各ビットは、8x8 グリッドであるチェス盤上の位置を表すために使用されています。

ビットが使われているので、これは 16 進数ではなく 2 進数で見た方が簡単です。たとえばwhite_pawns、バイナリで見てみましょう。

00000000000000000000000000000000000000000000001111111100000000

これを 8 つのグループに分けてみましょう。

00000000
00000000
00000000
00000000
00000000
00000000
11111111
00000000

1これで、黒が上に、白が下に、 s がゲーム開始時の白のポーンの位置を示していることがはっきりとわかります。

2 番目の例として、 を見てみましょうwhite_knights。s の1 つが欠けている0(無害ですが、形式が悪い) ため、ゼロを追加して戻しましょう: 0x00000000000042、これはバイナリで次のようになります。

00000000000000000000000000000000000000000000000000000001000010

...8 つのグループにすると、次のようになります。

00000000
00000000
00000000
00000000
00000000
00000000
00000000
01000010

...確かに白の騎士が行く場所です。

于 2013-10-22T11:10:57.283 に答える