비트보드

칸마다 하나씩 배정된 64개의 0 또는 1 표시로 선택한 집합에 속하는 칸을 나타내는 표현 방식.

설명

비트보드 는 64비트 숫자로 체스판 칸의 집합을 나타낸다. 비트는 0 또는 1만 담을 수 있는 단위다. 체스판에는 64칸이 있으므로 각 칸에 비트 하나를 배정할 수 있다.

백 폰 마스크

8
7
6
5
4
3
2
a1
b
c
d
e
f
g
h
활성 비트는 , , , 의 백 폰에 해당한다.
칸마다 하나의 비트

고정된 로컬 규칙: 표시값은 에서 까지 랭크별로 읽고, 이어 에서 까지 내려가며 에서 까지 계속한다. 1은 집합에 포함됨을 뜻한다. 표시된 집합, 백 폰: 00000000/00000000/00000000/00000000/00000000/00101000/10000001/00000000. 수를 둘 차례와 기타 FEN 데이터는 이 마스크에 포함되지 않는다.

값 1이 항상 기물이 있다는 뜻은 아니다. 해당 칸이 그 비트보드가 설명하는 집합에 속한다는 뜻이다. 비트보드는 모든 백 폰, 나이트가 공격하는 모든 칸, 점유된 모든 칸이나 그 밖의 유용한 집합을 표시할 수 있다.

나이트 공격 마스크

8
7
6
5
4
3
2
a1
b
c
d
e
f
g
h
나이트의 기하적 목적지 여덟 칸이 비어 있어도 집합을 이룬다.
기물 없이 표시된 1

같은 랭크 순서 규칙을 유지한다. 표시된 집합, 의 백 나이트가 공격하는 칸: 00000000/00000000/00101000/01000100/00000000/01000100/00101000/00000000. 값이 1인 비트는 그 칸에 기물이 없어도 기하적 속성을 나타낸다.

은 보통 여러 비트보드를 동시에 유지한다. 0과 1을 직접 결합하는 비트 연산은 매우 적은 프로세서 명령으로 집합의 교집합을 구하고, 합치고, 칸을 제외하거나 패턴을 이동할 수 있다. 이는 수와 공격을 빠르게 생성하는 데 도움이 된다.

공격 집합과 점유 집합의 교집합

8
7
6
5
4
3
2
a1
b
c
d
e
f
g
h
와 은 A와 B 모두에 속한다. 의 룩이 공격하며 흑 기물이 점유하고 있다.
A ∩ B의 결과

앞서 정한 랭크 순서 규칙에서 A는 의 백 룩이 공격하는 칸의 집합이고 B는 흑 기물이 점유한 칸의 집합이다. 표시된 집합은 A ∩ B다: 00000000/00000000/00000000/00010000/00000000/00000000/00000000/00000001. 활성 비트는 와 에 해당한다. 의 흑 킹은 B에는 속하지만 A에는 속하지 않는다.

비트보드 하나만으로 저장하지 않는 정보

  • 다른 비트보드가 구분 정보를 제공하지 않는 한 각 기물의 종류.
  • 어느 쪽이 둘 차례인지.
  • 킹과 룩의 특수 수가 아직 허용되는지를 뜻하는 권리와 폰이 특수 포획을 할 수 있는지를 뜻하는 앙파상 가능 여부.

완전한 포지션은 이러한 사실과 여러 집합을 결합한다. 비트보드는 같은 탐색 방법도 아니다. 정보를 표현하는 방식이다.

자주 혼동하는 개념

비트보드와 완전한 보드 상태

비트보드는 보통 하나의 칸 집합을 설명한다. 완전한 포지션은 여러 집합과 다른 상태 정보를 결합한다.

비트보드와 비트베이스

비트보드는 한 포지션의 칸을 표현하고, 비트베이스는 많은 엔드게임 포지션의 결과를 저장한다.

용어 보기

출처

  1. 1.Bitboards, Chess Programming Wiki
  2. 2.bitboard.h, Stockfish

관련 용어

© 2026 MindZug