棋盘位图填充

5
在一些位棋引擎中,棋子位棋盘的初始化如下:
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

有人能解释一下这些部件是如何获得它们各自的十六进制值的吗?
1个回答

4
每个比特被用来表示棋盘上的一个位置,这是一个8x8的网格。由于使用了比特,最好看一下它的二进制而不是十六进制。例如,让我们看看二进制中的white_pawns:0000000000000000000000000000000000000000000000001111111100000000。现在让我们把它分成每八个一组:00000000 00000000 00000000 00000000 00000000 00000000 11111111 00000000。现在你可以清楚地看到黑色在顶部,白色在底部,1表示游戏开始时白色的兵所在的位置。作为第二个例子,让我们看看white_knights。它缺少一个0(虽然无害,但是不好),因此让我们把那个零补回去:0x00000000000042,在二进制中看起来像这样:0000000000000000000000000000000000000000000000000000000001000010。...这样,每八个一组,看起来像这样:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000010。...这确实是白色的马应该去的地方。

2
哦,我明白了!非常感谢! - user2887522

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接