Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Simple questions about bitboards

Author: Ricardo Gibert

Date: 00:59:04 09/21/03

Go up one level in this thread


On September 20, 2003 at 22:12:51, Edward Seid wrote:

>Trying to understand a little bit about bitboards.  I have a few questions.
>
>Here is a 64-bit number in binary:
>10000000 00000000 00000000 00000000 ... (32 more zeros)
>What square is represented by the one... a1, a8, h1 or h8?
>
>Another, 64-bit number:
>(32 zeros) ... 00000000 00000000 00000000 00000001
>Again, what square is represented by the one?
>
>Is there a generally accepted standard way of mapping squares on the chessboard
>to bits in a bit board?
>
>VB.NET doesn't have a primitive data type for UInt64.  It does have a Long data
>type, which is Int64.  Is it possible to use Int64 to represent a bitboard, and
>the bitwise operators And, Or, Xor and Not?
>
>There also aren't any built-in operators for bitshifting, so a user-defined
>function would have to be used.  Do you see any problems in doing bitshifting
>using Int64?  Does the presence of a sign bit cause any problems?
>
>Thanks in advance.


You have just run up against one of the reasons I have for disliking the BB
approach. You can't depend on either computer languages or computer
architectures to accept the approach in an elegant or efficient manner.

For example, most bitboarders use some assembly language to be efficient even
when programming in C.


It seems to me that you could still use the BB approach in VB, but you just have
to create a routine to handle the right shift so that it does not sign extend.
Your VB program could call a C routine that converts to unsigned, then shifts
right however many bits, then converts back to signed, then returns the result
for VB to use.

Another possibility is to do the signed right shift in VB and mask off the MSB's
that are supposed to be zero. It is just barely possible the VB compiler will
recognize this as an *unsigned* right shift on the operand and do the
appropriate optimization. A little testing would be required to see if it does
this. You would compare the performance of the "corrected" right shifting with
left shifting.


Another reason I don't like BB's is it is just an accident that it is a good fit
with western chess e.g. when you complete your BB program, try converting it to
play Shogi (9x9 board) or Chinese chess (9x10 board). BTW, I know other
approaches have the same problem too, so I also have the same concern about
them.

Good luck!



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.