설명
비트보드 는 64비트 숫자로 체스판 칸의 집합을 나타낸다. 비트는 0 또는 1만 담을 수 있는 단위다. 체스판에는 64칸이 있으므로 각 칸에 비트 하나를 배정할 수 있다.
백 폰 마스크
칸마다 하나의 비트
고정된 로컬 규칙: 표시값은 에서 까지 랭크별로 읽고, 이어 에서 까지 내려가며 에서 까지 계속한다. 1은 집합에 포함됨을 뜻한다. 표시된 집합, 백 폰: 00000000/00000000/00000000/00000000/00000000/00101000/10000001/00000000. 수를 둘 차례와 기타 FEN 데이터는 이 마스크에 포함되지 않는다.
값 1이 항상 기물이 있다는 뜻은 아니다. 해당 칸이 그 비트보드가 설명하는 집합에 속한다는 뜻이다. 비트보드는 모든 백 폰, 나이트가 공격하는 모든 칸, 점유된 모든 칸이나 그 밖의 유용한 집합을 표시할 수 있다.
나이트 공격 마스크
기물 없이 표시된 1
같은 랭크 순서 규칙을 유지한다. 표시된 집합, 의 백 나이트가 공격하는 칸: 00000000/00000000/00101000/01000100/00000000/01000100/00101000/00000000. 값이 1인 비트는 그 칸에 기물이 없어도 기하적 속성을 나타낸다.
은 보통 여러 비트보드를 동시에 유지한다. 0과 1을 직접 결합하는 비트 연산은 매우 적은 프로세서 명령으로 집합의 교집합을 구하고, 합치고, 칸을 제외하거나 패턴을 이동할 수 있다. 이는 수와 공격을 빠르게 생성하는 데 도움이 된다.
공격 집합과 점유 집합의 교집합
A ∩ B의 결과
앞서 정한 랭크 순서 규칙에서 A는 의 백 룩이 공격하는 칸의 집합이고 B는 흑 기물이 점유한 칸의 집합이다. 표시된 집합은 A ∩ B다: 00000000/00000000/00000000/00010000/00000000/00000000/00000000/00000001. 활성 비트는 와 에 해당한다. 의 흑 킹은 B에는 속하지만 A에는 속하지 않는다.
비트보드 하나만으로 저장하지 않는 정보
- 다른 비트보드가 구분 정보를 제공하지 않는 한 각 기물의 종류.
- 어느 쪽이 둘 차례인지.
- 킹과 룩의 특수 수가 아직 허용되는지를 뜻하는 권리와 폰이 특수 포획을 할 수 있는지를 뜻하는 앙파상 가능 여부.
완전한 포지션은 이러한 사실과 여러 집합을 결합한다. 비트보드는 같은 탐색 방법도 아니다. 정보를 표현하는 방식이다.
자주 혼동하는 개념
비트보드와 완전한 보드 상태
비트보드는 보통 하나의 칸 집합을 설명한다. 완전한 포지션은 여러 집합과 다른 상태 정보를 결합한다.
비트보드와 비트베이스
비트보드는 한 포지션의 칸을 표현하고, 비트베이스는 많은 엔드게임 포지션의 결과를 저장한다.
용어 보기출처
- 1.Bitboards, Chess Programming Wiki
- 2.bitboard.h, Stockfish
