Computer Chess Club Archives


Search

Terms

Messages

Subject: Extracting bits from a BitBoard...

Author: Joel

Date: 07:53:05 11/17/02


Hey All,

I am a 2nd year Uni student from Australia who has recently gotten into chess
programming. My first attempt was a simple array-based alpha-beta variant which
struggled to search more than 6 levels deep in most positions! I think that
might have something to do with the fact that there was no move ordering,
transposition table, an expensive evaluation function, no killer moves and weak
coding :)

I have been working on my second attempt for some time now. It uses Bitboards. I
have a few questions regarding move generation.

It seems to me that the performance of the Bitboard approach relies somewhat
heavily on how fast you can retrieve the position of a 1 bit within a 64-bit
unsigned integer. I looked for sometime on the Internet for some kind of
magical, hacky solution to this dilemna, and the best I could find was this (b &
-b) trick which I used in a debatedly clever way. I was just wondering if there
is any approach significantly better than the one which I will outline below:

1. (b & -b) to clear all 1 bit's except for one.
2. get this value, mod it by 67 (which has the property that every possible
   value returned is unique, thus i can hash to the position of the bit in the
   64 bit integer.)

I am no expert, but it doesn't seem too ineffecient to me. Any problems?

Also, if there are any improvements, I would prefer to find out about the ones
which do not involve assembly coding - I do not want to make my program too
dependant on any one CPU architecture at this stage.

Thanks for your time,
Joel







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.