我想知道在国际象棋引擎中实现位板的正确方法是什么。到目前为止,我对国际象棋引擎编程的基础知识做了一些研究并做了一些笔记,主要是诸如极小极大、字母表、静止搜索和高级评估函数之类的东西。
然后我把我的项目分成三个部分:
- 图形用户界面
- 董事会代表
- 实现超越极小极大的搜索并为静态位置提供一个不错的评估函数
我使用位板来表示棋盘状态,以便在表示棋盘和计算游戏树时都节省时间。这就是我的问题所在。
因为我不只是想复制别人的代码,所以我尝试创建一个unsigned long
来测试它,但显然丢失了一点。
这是代码:
public static void main(String[] args) {
Long bitBoard = Long.parseUnsignedLong("9223372036854775807");
System.out.println("Number of bits in this 64-bit unsigned long: " + Long.bitCount(bitBoard));
System.out.println(Long.MAX_VALUE);
}
有人可以告诉我我做错了什么,以及为什么我会失去一点吗?