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