"Christos TZOTZIOY Georgiou" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> On 21 Feb 2005 06:48:19 -0500, rumours say that Dan Sommers 
> <[EMAIL PROTECTED]>
>>for c in range( 128 ):
>>    even_odd = 0
>>    print '%3d' % c,
>>    while c:
>>        c &= c - 1
>>        even_odd = not even_odd
>>    print int( even_odd )
>
> Just for the sake of people who haven't messed with bit manipulation in C 
> or
> assembly, the effect of
> c &= c - 1
> is to reset the rightmost (less significant) '1' bit of a number (ie 
> change it
> to '0').

Cute.  I tried it a few times until I saw why it works.  But it is also 
dangerous (within a loop like the above) in a language like current Python 
(and unlike C/assembler) in which the binary representation of -1 is 
effectively a left infinite string of '1's: ...1111111111

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to