Using while loop and if statement, I'm trying to get Python to
tell me whether there are even or odd number of 1's in a
binary representation. For example, if I give Python a
00000111, then I want it to say that the binary representation
given has an odd number of 1's. If I give it 00010111, then it
will tell me that there is an even number of 1's. I'd
appreciate any suggestion.
A couple come to mind. First, start by counting the bits. If
it's a string, this is easy:
b = "00010111"
result = b.count('1')
If it's an integer datatype instead of as string, as long as you
know the number of bits to expect, you can use
x = 0xf7
result = sum((x >> i) & 1 for i in range(8))
where 8 is the number of bits you expect. If you don't know the
number of bits to expect, you'd have to do it in a more
open-ended loop:
x = 0xDEADBEEF
result = 0
while x:
result += x & 1
x >>= 1
Once you have the resulting count, you can then check if it's
even or odd:
if result & 1:
print "Odd"
else:
print "Even"
Hope this helps,
-tkc
--
http://mail.python.org/mailman/listinfo/python-list