![]() |
VOOZH | about |
Swap all the pair of bits in a byte. Before swapping: 11-10-11-01 After swapping: 11-01-11-10
Examples:
Input : 00000010 Output : 00000001 Input : 00000100 Output : 00001000
Approach:
x = ((x & 0x55555555) >> 1) | ((x & 0xAAAAAAAA) <> 1 extracts the high bit position and shifts it to the low bit position.
Similarly the expression (x & 0xAAAAAAAA) << 1 extracts the low bit from each pair and shifts it to the high bit position.
The two parts are then combined using bitwise-OR.
x= 00011010 ((x & 0xAAAAAAAA) >> 1) = 00001010 >> 1 = 00000101 ((x & 0x55555555) << 1) = 00010000 <> 1) | ((x & 0x55555555) << 1) = 00100101
Below is the implementation of the above idea:
Output:
8
Time Complexity: O(1)
Space Complexity: O(1)
Reference:
https://stackoverflow.com/questions/4788799/swap-every-pair-of-bits-in-byte