Using while loop and if statement to tell if a binary has an odd or even number of 1's.

Duncan Booth duncan.booth at invalid.invalid
Thu Feb 5 04:56:51 EST 2009


Mark Dickinson <dickinsm at gmail.com> wrote:

> def count_set_bits(n):
>     # make sure we include an if, to
>     # satisfy OP's requirements:
>     if n < 0:
>         raise ValueError
>     count = 0
>     while n:
>         count += 1
>         n &= n-1
>     return count
> 
> is_even = count_set_bits(the_int) % 2 == 0
> 
> ...but anyone submitting this as a homework
> solution had better be prepared to explain why
> it works.
> 

I remember a programming exercise when I was an undergraduate and anyone 
who *didn't* use that trick got marked down for writing inefficient code.

-- 
Duncan Booth http://kupuguy.blogspot.com



More information about the Python-list mailing list