我想知道将棋盘实现为国际象棋引擎的正确方法是什么。到目前为止,我对国际象棋引擎编程的基础做了一些研究,并做了一些笔记,主要是诸如极小极大,字母表,静止搜索和高级评估函数之类的东西。
然后我将我的项目分成3个部分:
我正在使用位板代表电路板状态,以便在代表电路板和计算游戏树时节省时间。这就是我的问题所在。
由于我不只是想复制其他人的代码,我试图创建一个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);
}
有人能否给我一个关于我做错了什么的提示,以及为什么我会失去一点?
答案 0 :(得分:0)
在java中,Long
将始终被签名,第一位(您丢失)确定它是正还是负。 Long.parseUnsignedLong(...)
只会确保您传递的值是正数,而不是实际将数据类型转换为无符号长整数。
18446744073709551615
。