Author: Reinhard Scharnagl
Date: 11:33:21 07/08/03
Go up one level in this thread
Hi,
>lets see whether Reinhard's code will do even better...
the most time consuming process would be to produce
such test numbers, better done before stopping any time.
XORing three random numbers should produce a byte stream
with an average of two bits set (instead of 1.27405)
within a byte.
But I am convinced even using this higher bit-rate for my
proposed solution to be more effective, even without GOTOs.
And the code is not that much cryptic.
do {
switch (number) {
cases [all odd numbers (with 0x01 matching)]:
/* commands bit-0 */
number &= ~0x01; break;
cases [all numbers left with 0x02 matching]:
/* commands bit-1 */
number &= ~0x02; break;
cases [all numbers left with 0x04 matching]:
/* commands bit-2 */
number &= ~0x04; break;
case 0x08: case 0x18: case 0x28: case 0x38:
case 0x48: case 0x58: case 0x68: case 0x78:
case 0x88: case 0x98: case 0xa8: case 0xb8:
case 0xc8: case 0xd8: case 0xe8: case 0xf8:
/* commands bit-3 */
number &= ~0x08; break;
case 0x10: case 0x30: case 0x50: case 0x70:
case 0x90: case 0xb0: case 0xd0: case 0xf0:
/* commands bit-4 */
number &= ~0x10; break;
case 0x20: case 0x60: case 0xa0: case 0xe0:
/* commands bit-5 */
number &= ~0x20; break;
case 0x40: case 0xc0:
/* commands bit-6 */
number &= ~0x40; break;
case 0x80:
/* commands bit-7 */
number &= ~0x80; break;
case 0x00: default:
number = 0x00; break;
}
} while (number);
Reinhard
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.