체스 엔진에 비트 보드를 구현하는 올바른 방법이 무엇일까 궁금합니다. 지금까지 나는 체스 엔진 프로그래밍의 기초에 대한 연구를 수행하고 미니 노트, 알파벳순, 정지 검색 및 고급 평가 기능과 같은 몇 가지 노트를 사용했습니다.비트 보드를 올바르게 사용하는 방법
는 그럼 난은 3 개 부분으로 내 프로젝트를 분할 :
- GUI
- 보드 표현
- 는 최소 최대를 넘어 검색을 구현하고 정적 위치에 대한 괜찮은 평가 함수에 오는
게시판을 나타낼 때와 gametree를 계산할 때 모두 시간을 절약하기 위해 보드 상태를 나타내는 데 bitboards를 사용하고 있습니다. 이것은 내 문제가있는 곳입니다.
누군가 다른 사람의 코드를 복사하고 싶지 않았기 때문에 나는 이것을 시험해보기 위해 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);
}
누군가가 내가 뭘 잘못했는지에 관해서는 저에게 힌트를 줄 수, 그리고 왜 내가 조금 잃고?
그래서 기본적으로 최대 값을 길게 입력하려고 시도한 다음 프로그램에 '1'비트 수를 알려주었습니다. 나는 그것이 나에게 64를 줄 것으로 예상했다. 그러나 그것은 그것을 거부했다. 그리고 단지 나에게 내가 기대했던 것보다 1 작은 63를 줬다. 혼란스러운 ... – JavaIsMyBae
최대 긴 숫자를 1 씩 증가 시키면 도움이되지 않습니다. 그럴 경우 Long.bitCount() 메서드는 '1'을 반환합니다. – JavaIsMyBae