Tim Rowe <digi...@gmail.com> wrote: > 2009/2/5 Duncan Booth <duncan.bo...@invalid.invalid>: >> Mark Dickinson <dicki...@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. > > Is adding and a modulus *really^ more efficient than flipping a bool > as I suggested? I think I'd want to see measurements! > > I meant the bitwise twiddling, but actually I misread it. I thought Mark was using the n&~n+1 trick to pull out bits from least significant upwards when of course he's just clearing the low bit not extracting it.
-- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list