A 32 bit number is a series of bits from 0 to 31. We can access each bit via shifting operation. We take an unit 1 as
reference min value to traverse bits. When we shift 1 by 0 at right, it positioned at 0th position and if we AND it with bits it gives 0th position value.
ANDing with 1 gives us the exact value. If the bit is 1 then we get 1 else 0 will result as 0 only. Now we shift to
next position i.e. shift right by 1 and AND with bits. This way we can iterate till 31th bit and obtain each bits.
Previous steps shows how to access each bit and how to iterate through bits. Now reversing neighbour bits are more complex.
We need to get bit 0 and bit 1 and swap it and save it again back to bitmask.
In the next iteration we access 1 and 2 th bit and swap. In this way we swap two bits till highest position.
This is the way to swap 2 bits using a loop.
There is another way to swap bits without a loop. We take a bit mask with all even positions on (0x55).
Now AND it with bits. This will get all even bits and shift it to next left. Again take a bit mask where all odd bits are on.
AND it to mask will produce a mask of all odd bits. Now shift the bits to next right.
Now finally or this two bit patters to get the result bits.