www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/08/13/23:43:34

Message-ID: <37B4D8BC.6465@ns.sympatico.ca>
From: Klaas <klaas AT ns DOT sympatico DOT ca>
Organization: N/A
X-Mailer: Mozilla 3.04 (Win95; I)
MIME-Version: 1.0
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Bit counting?
References: <37B45836 DOT EAD7C82D AT swipnet DOT se> <37B48ABE DOT 110D2C13 AT intel DOT com>
Lines: 27
Date: Fri, 13 Aug 1999 23:47:24 -0300
NNTP-Posting-Host: 142.177.60.2
X-Trace: sapphire.mtt.net 934598824 142.177.60.2 (Fri, 13 Aug 1999 23:47:04 ADT)
NNTP-Posting-Date: Fri, 13 Aug 1999 23:47:04 ADT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Kurt Alstrup wrote:
> 
> Try this little function, I guess it may gain if written in assembly
> though ..
> 
> /*
>  *      Ones
>  *
>  * This magic counts the number of bits in one longword
>  */
> 
> int
> Ones(unsigned long mask)
> {
>   register unsigned long y;
> 
>   y = (mask >> 1) & 033333333333;
>   y = mask - y - ((y >>1) & 033333333333);
>   return (int) (((y + (y >> 3)) & 030707070707) % 077);
> }
> 
> Regards,
> Kurt Alstrup

Doesn't the modulo make it rather slow?

-Mike

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019