Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: Notesfiles $Revision: 1.6.2.17 $; site uiucuxc.UUCP Path: utzoo!watmath!clyde!cbosgd!ihnp4!inuxc!pur-ee!uiucdcs!uiucuxc!hamilton From: hamilton@uiucuxc.UUCP Newsgroups: net.lang.c Subject: Re: Re: reversing a mask Message-ID: <21000017@uiucuxc.UUCP> Date: Tue, 11-Dec-84 18:30:00 EST Article-I.D.: uiucuxc.21000017 Posted: Tue Dec 11 18:30:00 1984 Date-Received: Thu, 13-Dec-84 00:46:32 EST References: <691@gloria.UUCP> Lines: 26 Nf-ID: #R:gloria:-69100:uiucuxc:21000017:000:744 Nf-From: uiucuxc!hamilton Dec 11 17:30:00 1984 i'm straying even further from the subject, but eryk vershen's note reminded me of some cute code i found somewhere long ago: /* onebits - count 1-bits in an int * using Reingold, Nievergelt & Deo's Combinatorial Algorithm #1.3. */ static unsigned long int Hi[5] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 }; static unsigned long int Lo[5] = { 0x55555555, 0x33333333, 0x0F0F0F0F, 0x00FF00FF, 0x0000FFFF }; onebits (n) register unsigned long int n; { register int shift; register unsigned long int *H = Hi, *L = Lo; for (shift = 1; shift <= 16; shift *= 2) n = ((n & *H++) >> shift) + (n & *L++); return (n); } wayne ({decvax,ucbvax}!pur-ee!uiucdcs!uiucuxc!)hamilton