关闭。这个问题需要details or clarity .它目前不接受答案。
想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.
8年前关闭。
Improve this question
在一些位板国际象棋引擎中,位板被初始化如下:
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
有人可以解释一下这些部分如何获得各自的十六进制值吗?
最佳答案
每一位都被用来代表棋盘上的一个位置,棋盘是一个 8x8 的网格。
由于正在使用位,如果您以二进制而不是十六进制查看它会更容易。例如,让我们看看 white_pawns
二进制:
000000000000000000000000000000000000000000000001111111100000000
现在让我们把它分成八组:
00000000
00000000
00000000
00000000
00000000
00000000
11111111
00000000
现在您可以清楚地看到黑色在顶部,白色在底部,1
s 表示白方棋子在游戏开始时的位置。
作为第二个例子,让我们看看 white_knights
.它缺少其中一个 0
s(虽然它是无害的,但它的形式很糟糕),所以让我们把零加回来:0x00000000000042
,它在二进制中看起来像这样:
00000000000000000000000000000000000000000000000000000001000010
...八人一组,看起来像这样:
00000000
00000000
00000000
00000000
00000000
00000000
00000000
01000010
...这确实是白骑士会去的地方。
关于hex - 国际象棋棋盘人口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19516155/