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.
Original Bits 00010010001101000101011001111000 Reversed Bits 00100001001110001010100110110100
About our authors: Team EQA
You have viewed 1 page out of 252. Your C learning is 0.00% complete. Login to check your learning progress.