How to invert alternate bits of a number
- by Cupidvogel
The problem is how to invert alternate bits of a number, starting from the LSB. Currently what I am doing is first doing a
count = -1
while n:
n >>= 1
count += 1
to first find the position of the leftmost set bit, then running a loop to invert every alternate bit:
i = 0
while i <= count:
num ^= 1<<i
i += 2
Is there a quick hack solution instead of this rather boring loop solution? Of course, the solution can't make any asumption about the size of the integer.