Объяснение
Битборд представляет множество полей шахматной доски с помощью 64-битного числа. Бит представляет собой единицу, способную принимать только значение 0 или 1. Поскольку на шахматной доске 64 поля, каждому можно назначить один бит.
Маска белых пешек
Один бит на поле
Фиксированное локальное соглашение: индикаторы читаются по горизонталям от до , затем от до и так далее до и . 1 означает принадлежность множеству. Показано множество белых пешек: 00000000/00000000/00000000/00000000/00000000/00101000/10000001/00000000. Очередь хода и остальные данные FEN в эту маску не входят.
Значение 1 не всегда означает присутствие фигуры. Оно показывает, что поле входит во множество, описываемое этим битбордом. Битборд может отмечать все белые пешки, каждое поле под атакой коня, все занятые поля или любую другую полезную группу.
Маска атак коня
Единицы без фигур
Сохраняется то же соглашение о порядке горизонталей. Показано множество полей, атакованных белым конём с : 00000000/00000000/00101000/01000100/00000000/01000100/00101000/00000000. Единицы описывают геометрическое свойство, даже если на этих полях нет фигур.
обычно одновременно поддерживает несколько битбордов. Побитовые операции, непосредственно объединяющие нули и единицы, могут пересекать множества, объединять их, исключать поля или сдвигать шаблоны всего несколькими инструкциями процессора. Это обеспечивает быструю генерацию ходов и атак.
Пересечение атаки и занятости
Результат пересечения 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
