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

有人可以解释一下这些片段是如何获得它们各自的十六进制值的吗?

4

1 回答 1

3

每个位都用于表示棋盘上的一个位置,棋盘是一个 8x8 网格。

由于正在使用位,因此如果您以二进制而不是十六进制查看它会更容易。例如,让我们看一下white_pawns二进制:

00000000000000000000000000000000000000000000000001111111100000000

现在让我们把它分成八组:

00000000
00000000
00000000
00000000
00000000
00000000
11111111
00000000

现在您可以清楚地看到黑色在上,白色在下,1s 表示白棋开始时的棋子在哪里。

作为第二个例子,让我们看看white_knights. 它缺少一个0s (虽然它是无害的,但它的形式很糟糕),所以让我们把那个零加回去:0x00000000000042,它在二进制中看起来像这样:

000000000000000000000000000000000000000000000000000000000001000010

...以八个为一组,如下所示:

00000000
00000000
00000000
00000000
00000000
00000000
00000000
01000010

...这确实是白人骑士要去的地方。

于 2013-10-22T11:10:57.283 回答