Author: Gerd Isenberg
Date: 03:23:05 06/27/01
Go up one level in this thread
instead of int n = 0; for (int i=15; i>=0; --i) if (dirnow & (1 << i)) directions[n++] = i; you may try: int tmp = dirnow & 0xffff; // only 16 bits for (int n = 0; tmp; n++) { int lsbb = tmp & -tmp; // get lsb tmp ^= lsb; // reset bit directions[n] = ((((((( (lsb & 0xff00) != 0) ) << 1) + ( (lsb & 0x0f0f) != 0) ) << 1) + ( (lsb & 0xcccc) != 0) ) << 1) + ( (lsb & 0xaaaa) != 0) ; // bit index } best regards Gerd
This page took 0 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.