NASM: Count how many bits in a 32 Bit number are set to 1.

Posted by citronas on Stack Overflow See other posts from Stack Overflow or by citronas
Published on 2010-05-28T18:19:59Z Indexed on 2010/05/28 18:22 UTC
Read the original article Hit count: 214

Filed under:
|
|

I have a 32 Bit number and want to count know how many bits are 1.

I'm thinking of this pseudocode:

mov eax, [number]
while(eax != 0)
{
  div eax, 2
  if(edx == 1)
  {
   ecx++;
  } 
  shr eax, 1
}

Is there a more efficient way?

I'm using NASM on a x86 processor.

(I'm just beginning with assembler, so please do not tell me to use code from extern libraries, because I do not even know how to include them ;) )

(I just found http://stackoverflow.com/questions/109023/best-algorithm-to-count-the-number-of-set-bits-in-a-32-bit-integer which also contains my solution. There are other solutions posted, but unfortunatly I can't seem to figure out, how I would write them in assembler)

© Stack Overflow or respective owner

Related posts about count

Related posts about nasm