解释
位棋盘用一个64位数字表示国际象棋棋盘上的一组格子。位是一种只能取0或1的信息单位。由于棋盘有64格,可以为每个格子分配一位。
值为1并不总是表示格子上有棋子,而是表示该格属于这个位棋盘所描述的集合。一个位棋盘可以标记全部白兵、某匹马攻击的每个格子、所有被占据的格子,或任何其他有用的集合。
通常会同时维护多个位棋盘。按位运算直接组合0和1,可以用很少的处理器指令求集合交集、并集、移除格子或移动模式,从而支持快速生成着法和攻击。
单个位棋盘本身不保存什么
- 每一种棋子类型,除非由其他位棋盘提供这种区分。
- 轮到哪一方走棋。
- 权,也就是王与车的特殊着法是否仍被允许,以及吃过路兵是否可用,也就是兵能否进行这种特殊吃法。
一个完整局面会把这些事实与多个集合结合起来。位棋盘也不是一类搜索方法,而是一种信息表示方式。
常见混淆
位棋盘与完整棋盘状态
一个位棋盘通常只描述一组格子。完整局面会把多个集合与其他状态信息结合起来。
位棋盘与位库
位棋盘表示一个局面中的格子,位库则保存许多残局局面的结果。
查看术语来源
- 1.Bitboards, Chess Programming Wiki
- 2.bitboard.h, Stockfish
