hex - 国际象棋棋盘人口

标签 hex chess bitboard

关闭。这个问题需要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/

相关文章:

c - N-Queen 初学者回溯

java - 国际象棋游戏中的棋子移动 - Java

bit-manipulation - 有没有一种便宜的方法来将字节中的位变为 "mirror"?

c - 连接 5 游戏的位板?

java - 九人莫里斯游戏的位板表示

C - 将 long int 转换为带符号的十六进制字符串

javascript - 如何比较包含十六进制字符引用的 innerHTML?

php - 将 '$_GET' 十六进制值(字符串形式)转换为十六进制 int ——如何?

ruby - 无效的十六进制转义

java - 使用 JPanel 创建棋盘