Changes

Jump to: navigation, search

Bitboards

21,846 bytes added, 19:01, 22 March 2018
Created page with "'''Home * Board Representation * Bitboards''' {| class="wiki_table" |- style="vertical-align:top;float:bottom;" File:NY Met klee variations.JPG|border|thum..."
'''[[Main Page|Home]] * [[Board Representation]] * Bitboards'''
{| class="wiki_table"
|- style="vertical-align:top;float:bottom;"
[[File:NY Met klee variations.JPG|border|thumb|222px|Paul Klee, "Variations" au Met de New York, 1927 <ref>[[Arts#Klee|Paul Klee]], "Variations" au Met de New York, 1927, [https://commons.wikimedia.org/wiki/File:NY_Met_klee_variations.JPG] [https://en.wikipedia.org/wiki/Wikimedia_Commons Wikimedia Commons], [https://en.wikipedia.org/wiki/Metropolitan_Museum_of_Art Metropolitan Museum of Art]</ref>]]
| '''Bitboards''',
also called bitsets or bitmaps, are among other things used to represent the [[Chessboard|board]] inside a chess program in a '''piece centric''' manner. Bitboards, are in essence, [https://en.wikipedia.org/wiki/Finite_set finite sets] of up to [https://en.wikipedia.org/wiki/64_%28number%29 64] [https://en.wikipedia.org/wiki/Element_%28mathematics%29 elements] - all the [[Squares|squares]] of a [[Chessboard|chessboard]], one [[Bit|bit]] per square. Other board [[Games|games]] with greater board sizes may be use set-wise representations as well <ref>[[Reijer Grimbergen]] ('''2007'''). ''Using Bitboards for Move Generation in Shogi''. [[ICGA Journal#30_1|ICGA Journal, Vol. 30, No. 1]], [http://www2.teu.ac.jp/gamelab/RESEARCH/ICGAJournal2007.pdfICGAJournal2007.pdf pdf]</ref>, but classical chess has the advantage that one [[Quad Word|64-bit word]] or register covers the whole board. Even more bitboard friendly is [[Checkers]] with 32-bit bitboards and less [[Pieces#PieceTypeCoding|piece-types]] than chess <ref>[http://www.3dkingdoms.com/checkers/bitboards.htm Checker Bitboards Tutorial] by [[Jonathan Kreuzer]]</ref> <ref>[http://www.talkchess.com/forum/viewtopic.php?t=64487 Checkers Bitboard representation] by Pranav Deshpande, [[CCC]], July 02, 2017</ref> .
|}
=The Board of Sets=
To [[Board Representation|represent the board]] we typically need one bitboard for each [[Pieces#PieceTypeCoding|piece-type]] and [[Color|color]] - likely encapsulated inside a class or structure, or as an [[Array|array]] of bitboards as part of a position object. A one-bit inside a bitboard implies the existence of a piece of this piece-type on a certain square - one to one associated by the bit-position.
* [[Square Mapping Considerations]]
* [[Bitboard Board-Definition|Standard Board-Definition]]

=Bitboard Basics=
Of course bitboards are not only about the existence of pieces - it is a general purpose, '''set-wise''' data-structure fitting in one 64-bit register. For example, a bitboard can represent things like attack- and defend sets, move-target sets and so on.

==General Bitboard Techniques==
The fundamental bitboard basics.
* [[General Setwise Operations]]
* [[Population Count]]
* [[BitScan]]
* [[Flipping Mirroring and Rotating]]
* [[Fill Algorithms]]

==<span id="Pattern"></span>Pattern and Attacks==
This is basically about chess, how to calculate attack-sets and various pattern for [[Evaluation|evaluation]] and [[Move Generation|move generation]] purposes.
* [[Pawn Pattern and Properties]]
* [[Knight Pattern]]
* [[King Pattern]]
* [[Sliding Piece Attacks]] including [[Rotated Bitboards|rotated]] and [[Magic Bitboards|magic bitboards]]
* [[Square Attacked By]]
* [[X-ray Attacks (Bitboards)|X-ray Attacks]]
* [[Checks and Pinned Pieces (Bitboards)|Checks and Pinned Pieces]]
* [[Design Principles]]

==Move Generation Issues==
Bitboard aspects on [[Move Generation|move generation]] and [[Static Exchange Evaluation|static exchange evaluation]] (SEE).
* [[Bitboard Serialization]]
* [[Pieces versus Directions]]
* [[DirGolem]]
* [[SEE - The Swap Algorithm]]
* [[Attack and Defend Maps]]

==Miscellaneous==
* [[Backtracking#8QinBitboards|Backtracking - Eight Queens puzzle with Bitboards]]
* [[De Bruijn Sequence Generator]]
* [[Quad-Bitboards]]
* [[Traversing Subsets of a Set]]

==<span id="DefiningBitboards"></span>Defining Bitboards==
''To be aware of their scalar 64-bit origin, we use so far a type defined unsigned integer U64 in our [[C]] or [[Cpp|C++]] source snippets, the scalar 64-bit long in [[Java]]. Feel free to define a distinct type or wrap U64 into classes for better abstraction and type-safety during compile time. The macro C64 will append a suffix to 64-bit constants as required by some compilers'':

typedef unsigned __int64 U64; // for the old microsoft compilers
typedef unsigned long long U64; // supported by MSC 13.00+ and C99
#define C64(constantU64) constantU64##ULL

=<span id="BitboardHistory"></span>Bitboard-History=
The general approach of [[Mikhail R. Shura-Bura#Bitsets|bitsets]] was proposed by [[Mikhail R. Shura-Bura]] in 1952 <ref>[https://en.wikipedia.org/wiki/Lazar_Lyusternik Lazar A. Lyusternik]], [[http://www.mathnet.ru/php/person.phtml?personid=30351&option_lang=eng Aleksandr A. Abramov], [https://en.wikipedia.org/wiki/Victor_ShestakovVictor I. Shestakov], [[Mikhail R. Shura-Bura]] ('''1952'''). ''Programming for High-Speed Electronic Computers''. (Программирование для электронных счетных машин)</ref> <ref>[[Mathematician#Ershov|Andrey Ershov]], [[Mikhail R. Shura-Bura]] ('''1980'''). ''[http://ershov.iis.nsk.su/archive/eaindex.asp?lang=2&gid=910 The Early Development of Programming in the USSR]''. in [http://en.wikipedia.org/wiki/Nicholas_C._Metropolis|Nicholas C. Metropolis]] (ed.) ''[[http://dl.acm.org/citation.cfm?id=578384 A History of Computing in the Twentieth Century]''. [https://en.wikipedia.org/wiki/Academic_Press Academic Press], [http://ershov.iis.nsk.su/archive/eaimage.asp?did=28792&fileid=173670 preprint pp. 43]</ref>. The bitboard method for holding a board game appears to have been invented also in 1952 by [[Christopher Strachey]] using White, Black and King bitboards in his checkers program for the [[Ferranti Mark 1]], and in the mid 1950's by [[Arthur Samuel]] in his checkers program as well. In computer chess, bitboards were first described by [[Georgy Adelson-Velsky]] et al. in 1967 <ref>[http://groups.google.com/group/rec.games.chess/browse_frm/thread/0e3a93f45ff07d31# Early Reference on Bit-Boards] by [[Tony Warnock]] from [[Computer Chess Forums|rec.games.chess]], October 29, 1994</ref>, reprinted 1970 <ref>[[Georgy Adelson-Velsky]], [[Vladimir Arlazarov]], [[Alexander Bitman]], [[Alexander Zhivotovsky]], [[Anatoly Uskov]] ('''1970'''). ''[http://iopscience.iop.org/0036-0279/25/2/R07 Programming a Computer to Play Chess]''. [http://iopscience.iop.org/0036-0279/25/2 Russian Mathematical Surveys, Vol. 25], pp. 221-262.</ref> . Bitboards were used in [[Kaissa]] and in [[Chess (Program)|Chess]]. The invention and publication of [[Rotated Bitboards]] by [[Robert Hyatt]] <ref>[[Robert Hyatt]] ('''1999'''). ''[http://www.craftychess.com/hyatt/bitmaps.html Rotated Bitmaps, a New Twist on an Old Idea]''. [[ICGA Journal#22_4|ICCA Journal, Vol. 22, No. 4]]</ref> and [[Peter Gillgasch]] with [[Ernst A. Heinz]] in the 90s was another milestone in the history of bitboards. [[Steffan Westcott|Steffan Westcott's]] innovations, too expensive on 32-bit [[x86]] processors, should be revisited with [[x86-64]] and [[SIMD and SWAR Techniques|SIMD instructions]] in mind. With the advent of fast 64-bit multiplication along with faster [[Memory|memory]], [[Magic Bitboards]] as proposed by [[Lasse Hansen]] <ref>[http://www.open-aurec.com/wbforum/viewtopic.php?t=5015 Fast(er) bitboard move generator] by [[Lasse Hansen]], [[Computer Chess Forums|Winboard Forum]], June 14, [[Timeline#2006|2006]]</ref> and refined by [[Pradu Kannan]] <ref>[http://www.open-aurec.com/wbforum/viewtopic.php?t=5441 List of magics for bitboard move generation] by [[Pradu Kannan]], [[Computer Chess Forums|Winboard Forum]], August 23, [[Timeline#2006|2006]]</ref> have surpassed Rotated.

=Analysis=
The use of bitboards has spawned numerous discussions about their costs and benefits. The major points to consider are:
* Bitboards can have a high information density.
* Single populated or even empty Bitboards have a low information density.
* Bitboards are weak in answering questions like what piece if any resides on square x. One reason to keep a redundant [[Mailbox|mailbox]] board representation with some additional [[Incremental Updates|update]] costs during [[Make Move|make]]/[[Unmake Move|unmake]].
* Bitboards can operate on all squares in parallel using bitwise instructions. This is one of the main arguments used by proponents of bitboards, because it allows for a flexibility in [[Evaluation|evaluation]].
* Bitboards are rather handicapped on 32 bit processors, as each bitwise computation must be split into two or more instructions <ref>[http://www.stmintz.com/ccc/index.php?id=30562 Efficient Bitboard Implementation on 32-bit Architecture] by [[Roberto Waldteufel]], [[CCC]], October 25, 1998</ref> . As most modern processors are now 64 bit, this point is somewhat diminished <ref>[http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=6651 Speedup by bitboards] by [[Onno Garms]], [[Computer Chess Forums|Winboard Forum]], July 13, 2007</ref> .
* Bitboards often rely on [[Bit-Twiddling|bit-twiddling]] and various optimization tricks and special instructions for certain hardware architectures, such as [[BitScan|bitscan]] and [[Population Count|population count]]. Optimal code requires machine dependent [http://en.wikipedia.org/wiki/Header_file header-files] in [[C]]/[[Cpp|C++]]. Portable code is likely not optimal for all processors.
* Some operations on bitboards are less general, f.i. shifts. This requires additional code overhead.

=Publications=
==1970 ...==
* [[Georgy Adelson-Velsky]], [[Vladimir Arlazarov]], [[Alexander Bitman]], [[Alexander Zhivotovsky]], [[Anatoly Uskov]] ('''1970'''). ''[http://iopscience.iop.org/0036-0279/25/2/R07 Programming a Computer to Play Chess]''. [http://iopscience.iop.org/0036-0279/25/2 Russian Mathematical Surveys, Vol. 25], pp. 221-262.
* [[David Slate]], [[Larry Atkin]] ('''1977'''). ''CHESS 4.5 - The Northwestern University Chess Program.'' [[Chess Skill in Man and Machine]], reprinted ('''1988''') in [[Computer Chess Compendium]] » [[Chess (Program)|Chess]]
==1980 ...==
* [[Zdenek Zdrahal|Zdenek Zdráhal]], [[Ivan Bratko]], [[Alen Shapiro]] ('''1981'''). ''[http://comjnl.oxfordjournals.org/content/24/3/263.abstract Recognition of Complex Patterns Using Cellular Arrays]''. [http://comjnl.oxfordjournals.org/content/24/3.toc The Computer Journal, Vol. 24, No. 3], pp. 263-270
* [[Stuart Cracraft]] ('''1984'''). ''Bitmap move generation in Chess''. [[ICGA Journal#7_3|ICCA Journal, Vol. 7, No. 3]]
* [[Burton Wendroff]] ('''1985'''). ''Attack Detection and Move Generation on the X-MP/48''. [[ICGA Journal#8_2|ICCA Journal, Vol. 8, No. 2]]
* [[Arch D. Robison]], [[Brian J. Hafner]], [[Steven Skiena]] ('''1989'''). ''[http://comjnl.oxfordjournals.org/content/32/6/567.abstract Eight Pieces Cannot Cover a Chess Board]''. [https://en.wikipedia.org/wiki/The_Computer_Journal The Computer Journal], Vol. 32, No. 6, [http://comjnl.oxfordjournals.org/content/32/6/567.full.pdf pdf]
==1990 ...==
* [[Ernst A. Heinz]] ('''1997'''). ''[http://people.csail.mit.edu/heinz/dt/node2.html How DarkThought Plays Chess]''. [[ICGA Journal#20_3|ICCA Journal, Vol. 20, No. 3]] » [[DarkThought]]
* [[Robert Hyatt]] ('''1999'''). ''[http://www.craftychess.com/hyatt/bitmaps.html Rotated Bitmaps, a New Twist on an Old Idea]''. [[ICGA Journal#22_4|ICCA Journal, Vol. 22, No. 4]] » [[Rotated Bitboards]] <ref>[http://www.stmintz.com/ccc/index.php?id=71880 Bitboard user's information request] by [[Robert Hyatt]], [[CCC]], October 05, 1999</ref>
==2000 ...==
* [[David Rasmussen]] ('''2004'''). ''Parallel Chess Searching and Bitboards''. Master's thesis, [http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3267/ps/imm3267.ps ps] » [[Parallel Search]]
* [[Borko Bošković]], [[Sašo Greiner]], [[Janez Brest]], [[Viljem Žumer]] ('''2005'''). ''[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1491153 The Representation of Chess Game]''. Proceedings of the 27th International Conference on Information Technology Interfaces
* [[Pablo San Segundo]], [[Ramón Galán]] ('''2005'''). ''[http://www.actapress.com/Abstract.aspx?paperId=18953 Bitboards: A New Approach]''. [http://www.informatik.uni-trier.de/~ley/db/conf/aia/aia2005.html#SegundoG05 AIA 2005]
* [[Pablo San Segundo]], [[Ramón Galán]], [[Fernando Matía]], [[Diego Rodríguez-Losada]], [[Agustín Jiménez]] ('''2006'''). ''[http://dl.acm.org/citation.cfm?id=1191130 Efficient Search Using Bitboard Models]''. [http://www.informatik.uni-trier.de/~ley/db/conf/ictai/ictai2006.html#SegundoGMRJ06 ICTAI 2006], [http://www.intelligentcontrol.es/diego/publications/SanSegundo_Ictai06.pdf pdf]
* [[Fridel Fainshtein]] ('''2006'''). ''An Orthodox k-Move Problem-Composer for Chess Directmates''. M.Sc. thesis, [[Bar-Ilan University]], [http://www.problemschach.de/KMOVEComposer.pdf pdf], Appendix D - 64-bit Representation, pp. 105
* [[Fridel Fainshtein]], [[Yaakov HaCohen-Kerner]] ('''2006'''). ''A Chess Composer of Two-Move Mate Problems''. [[ICGA Journal#29_1|ICGA Journal, Vol. 29, No. 1]], [http://homedir.jct.ac.il/~kerner/pdf_docs/ICGA_computer_composer.pdf pdf], Appendix E: 64-bit representation, pp. 22
* [[Reijer Grimbergen]] ('''2007'''). ''Using Bitboards for Move Generation in Shogi''. [[ICGA Journal#30_1|ICGA Journal, Vol. 30, No. 1]], [http://www2.teu.ac.jp/gamelab/RESEARCH/ICGAJournal2007.pdf pdf] » [[Move Generation]], [[Shogi]]
* [[James Glenn]], [http://www.cs.loyola.edu/~binkley/ David Binkley] ('''2008''') ''An Investigation of Hierarchical Bit Vectors''. [https://www.novapublishers.com/catalog/product_info.php?products_id=6555 New Topics in Theoretical Computer Science], [http://www.cs.loyola.edu/~binkley/papers/tcsrt08-hbit-vectors.pdf pdf]
* [[Shi-Jim Yen]], [[Jung-Kuei Yang]] ('''2009'''). ''The Bitboard Design and Bitwise Computing in Connect Six''. [[Conferences#GPW|14th Game Programming Workshop]]
* [[Fritz Reul]] ('''2009'''). ''New Architectures in Computer Chess''. Ph.D. Thesis, [https://pure.uvt.nl/ws/files/1098572/Proefschrift_Fritz_Reul_170609.pdf pdf]
==2010 ...==
* [[Stefano Carlini]] ('''2010'''). ''Arimaa, a New Challenge for Artificial Intelligence''. M.Sc. thesis, [https://en.wikipedia.org/wiki/University_of_Modena_and_Reggio_Emilia University of Modena and Reggio Emilia], [http://arimaa.com/arimaa/papers/StefanoCarlini/Arimaa2.pdf pdf] » Chapter 4, Bitboards in [[Arimaa]]
* [[Shi-Jim Yen]], [[Jung-Kuei Yang]], [[Kuo-Yuan Kao]], [[Tai-Ning Yang]] ('''2012'''). ''[http://www.sciencedirect.com/science/article/pii/S0950705112001293 Bitboard Knowledge Base System and Elegant Search Architectures for Connect6]''. [https://www.journals.elsevier.com/knowledge-based-systems/ Knowledge-Based Systems], Vol. 34 » [[Connect6]]
* [[Cameron Browne]], [[Stephen Tavener]] ('''2013'''). ''[http://www.aifactory.co.uk/newsletter/2012_02_fast_lane.htm Life in the Fast Lane]''. [[AI Factory]] » [http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Conway's Game of Life] within a [[Bitboards|Bitboard]]
* [[Cameron Browne]] ('''2014'''). ''Bitboard Methods for Games''. [[ICGA Journal#37_2|ICGA Journal, Vol. 37, No. 2]]

=Forum Posts=
==1994==
* [https://groups.google.com/d/msg/rec.games.chess/vvl1nLv1MD8/oHVKdLXuiaUJ bitboard move generation] by [[Robert Hyatt]], [[Computer Chess Forums|rgc]], October 25, 1994
* [https://groups.google.com/d/msg/rec.games.chess/106wKFeI8BA/zNuzu-2aMowJ bitboard move generator] by [[Joël Rivat]], [[Computer Chess Forums|rgc]], November 13, 1994
* [https://groups.google.com/d/msg/rec.games.chess/M4CKCmqDNkI/TjVJEQY0GC0J bitboard position evaluations] by [[Robert Hyatt]], [[Computer Chess Forums|rgc]], November 17, 1994 » [[Evaluation]]
==1995 ...==
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/71f7b5ee3764f082 Chess programming using bitboards] by [[Joël Rivat]], [[Computer Chess Forums|rgcc]], August 18, 1995
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/834fa3c273fafffe/cab7c12ea99e9a35 Bit Board Bonkers??] by Dave, [[Computer Chess Forums|rec.games.chess.computer]], July 28, 1997
* [http://www.stmintz.com/ccc/index.php?id=30562 Efficient Bitboard Implementation on 32-bit Architecture] by [[Roberto Waldteufel]], [[CCC]], October 25, 1998
* [http://www.stmintz.com/ccc/index.php?id=34506 Bitboard question] by [[Werner Inmann]], [[CCC]], December 02, 1998
* [http://www.stmintz.com/ccc/index.php?id=34852 Bitboards] by [[Frank Phillips]], [[CCC]], December 05, 1998
* [http://www.stmintz.com/ccc/index.php?id=48176 bitboards in java?] by vitor, [[CCC]], April 06, 1999 » [[Java]]
* [http://www.stmintz.com/ccc/index.php?id=53446 BitBoards] by [[Frank Phillips]], [[CCC]], May 29, 1999
* [http://www.stmintz.com/ccc/index.php?id=71880 Bitboard user's information request] by [[Robert Hyatt]], [[CCC]], October 05, 1999 » [[Rotated Bitboards]] <ref>[[Robert Hyatt]] ('''1999'''). ''[http://www.craftychess.com/hyatt/bitmaps.html Rotated Bitmaps, a New Twist on an Old Idea]''. [[ICGA Journal#22_4|ICCA Journal, Vol. 22, No. 4]]</ref>
==2000 ...==
* [http://www.stmintz.com/ccc/index.php?id=313504 To bitboard or not to bitboard?] by [[Tord Romstad]], [[CCC]], August 30, 2003
* [http://www.stmintz.com/ccc/index.php?id=352040 How important are Bitboards?] by [[Martin Schreiber]], [[CCC]], February 29, 2004
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=516Two questions for bitboard experts] by [[Tord Romstad]], [[Computer Chess Forums|Winboard Forum]], November 06, 2004 » [[Square Attacked By#InBetween|In Between]], [[Piece-Lists]]
==2005 ...==
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=4521 Bitboard question] by [[Tord Romstad]], [[Computer Chess Forums|Winboard Forum]], March 14, 2006
* [http://www.talkchess.com/forum/viewtopic.php?t=13426 Speedup with bitboards on 64-bit CPUs] by [[Tord Romstad]], [[CCC]], April 27, 2007
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=6651 Speedup by bitboards] by [[Onno Garms]], [[Computer Chess Forums|Winboard Forum]], July 13, 2007
* [http://www.talkchess.com/forum/viewtopic.php?t=17138 BitBoard representations of the board] by [[Uri Blass]], [[CCC]], October 14, 2007
* [http://www.talkchess.com/forum/viewtopic.php?t=25917 Bitboards / move generation on larger boards] by [[Gregory Strong]], [[CCC]], January 09, 2009
* [http://www.talkchess.com/forum/viewtopic.php?t=26527 Bitboard techniques in Xiangqi] by [[Harm Geert Muller]], [[CCC]], February 12, 2009 » [[Chinese Chess]]
* [http://www.talkchess.com/forum/viewtopic.php?t=28207 Bitboards using 2 DOUBLE's ?] by [[Carey Bloodworth|Carey]], [[CCC]], June 02, 2009 » [[Double]]
==2010 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=42108 Bitboard implementation, how much time?] by [[Ed Schroder|Ed Schröder]], [[CCC]], January 22, 2012
* [http://macechess.blogspot.de/2013/04/64-bits-for-64-squares.html 64 bits for 64 squares ?] by [[Thomas Petzke]], [http://macechess.blogspot.de/ mACE Chess], April 28, 2013 » [[Population Count]]
* [http://www.talkchess.com/forum/viewtopic.php?t=54208 Bitboard Tricks for Large Chess Variants] by [[Ed Trice]], [[CCC]], November 01, 2014
==2015 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=56476 Bitboard database code samples] by [[Steven Edwards]], [[CCC]], May 25, 2015 » [[Symbolic]]
* [http://www.talkchess.com/forum/viewtopic.php?t=60007 M42 - A C++ library for Bitboard attack mask generation] by [[Syed Fahad]], [[CCC]], April 30, 2016 <ref>[https://sites.google.com/site/sydfhd/projects/m42 M42] by [[Syed Fahad]]</ref>
* [http://www.talkchess.com/forum/viewtopic.php?t=64487 Checkers Bitboard representation] by Pranav Deshpande, [[CCC]], July 02, 2017 » [[Checkers]]
* [http://www.talkchess.com/forum/viewtopic.php?t=65724 Bitboards and Java] by [[Fred Hamilton]], [[CCC]], November 14, 2017 » [[Java]]

=Viewer & Calculator=
* [[Bibob]]
* [http://cinnamonchess.altervista.org/bitboard_calculator/Calc.html Bitboard Calculator] by [[Giuseppe Cannella]]
* [http://www.chessprogramming.net/computerchess/free-chess-bitboard-viewer/ Free Chess Bitboard Viewer - Computer Chess Programming] by [[Steve Maughan]]
* [http://www.chess2u.com/t2159-new-free-tool-bitboards-helper New free tool : Bitboards Helper] by [[Julien Marcel]]

=External Links=
* [http://en.wikipedia.org/wiki/Bitboard Bitboards from Wikipedia]
* [http://en.wikipedia.org/wiki/Bit_array Bit-Array from Wikipedia]
* [http://en.wikipedia.org/wiki/Bitboard#History Bitboard-History from Wikipedia]
* [http://www.craftychess.com/hyatt/boardrep.html Chess board representations] by [[Robert Hyatt]]
* [http://webpages.charter.net/tlikens/bitmaps/bit_intro.html Bitboards (aka bitmaps)] by [[Tom Likens]]
* [http://www.fzibi.com/cchess/bitboards.htm An Introduction to BITBOARDS] by [[Franck Zibi]]
* [http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html Bitwise Optimization in Java: Bitfields, Bitboards, and Beyond] by [[Glen Pepicelli]], 2005, [http://en.wikipedia.org/wiki/O%27Reilly_Media O'Reilly's] [http://onjava.com/ OnJava.com] » [[Java]], [[Bit-Twiddling]]
* [http://pages.cs.wisc.edu/~psilord/blog/data/chess-pages/index.html Chess and Bitboards] by [http://pages.cs.wisc.edu/~psilord/ Peter Keller]
* [http://sanher.de/index.htm?lang=eng&url=bitfuncs Bit functions for Delphi] by [[Andreas Herrmann]] » [[Delphi]]
* [http://labraj.uni-mb.si/en/Position_Representation Position Representation - Computer Architecture and Languages Laboratory], [[University of Maribor]]
* [http://stackoverflow.com/questions/tagged/bitboard Newest 'bitboard' Questions] - [http://en.wikipedia.org/wiki/Stack_Overflow Stack Overflow]

=References=
<references />

'''[[Board Representation|Up one level]]'''

Navigation menu