On 2006-12-06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Yet another solution: > > def flipbits(x): > """reverse bits in a byte""" > x1 = x << 4 | x >> 4 > x2 = (x1 & 51) << 2 | (x1 & 204) >> 2 > return (x2 & 85) << 1 | (x2 & 170) >> 1 > > The idea is to first swap the two nybbles, then swap bits 0, > 1, 5, 6 with 2, 3, 6, 7 respectively, and finally swap bits 0, > 2, 4, 6 with bits 1, 3, 5, 7 respectively.
It's a little less obtuse if you spell it this way: def flipbits(x): """reverse bits in a byte""" x1 = x << 4 | x >> 4 x2 = (x1 & 0x33) << 2 | (x1 & 0xcc) >> 2 return (x2 & 0x55) << 1 | (x2 & 0xaa) >> 1 -- Grant Edwards grante Yow! Now I understand the at meaning of "THE MOD SQUAD"! visi.com -- http://mail.python.org/mailman/listinfo/python-list