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:
// C++ program to swap every two bits in a byte.
#include<bits/stdc++.h>
using namespace std;
unsigned int swapBitsInPair(unsigned int x)
{
// Extracting the high bit shift it to lowbit
// Extracting the low bit shift it to highbit
return ((x & 0xAAAAAAAA) >> 1) |
((x & 0x55555555) << 1);
}
/* Driver function to test above function */
int main()
{
unsigned int x = 4;
cout << swapBitsInPair(x);
return 0;
}
// This code is contributed by Kasina Dheeraj.
// Java program to swap every
// two bits in a byte.
import java.util.*;
class GFG
{
static int swapBitsInPair( int x)
{
// Extracting the high bit shift it to lowbit
// Extracting the low bit shift it to highbit
return ((x & 0xAAAAAAAA) >> 1) |
((x & 0x55555555) << 1);
}
// Driver Function
public static void main(String[] args)
{
int x = 4;
System.out.print(swapBitsInPair(x));
}
}
// This code is contributed by Gitanjali.
# Python program to swap every
# two bits in a byte.
import math
def swapBitsInPair( x):
# Extracting the high bit shift it to lowbit
# Extracting the low bit shift it to highbit
return ((x & 0xAAAAAAAA) >> 1) or ((x & 0x55555555) << 1)
# driver Function
x = 4;
print(swapBitsInPair(x))
# This code is contributed by Gitanjali.
// C# program to swap every two bits in a byte.
using System;
public class GFG{
static uint swapBitsInPair(uint x)
{
// Extracting the high bit shift it to lowbit
// Extracting the low bit shift it to highbit
return ((x & 0xAAAAAAAA) >> 1) |
((x & 0x55555555) << 1);
}
// Driver function to test above function
static public void Main () {
uint x = 4;
Console.WriteLine(swapBitsInPair(x));
}
}
// This code is contributed by vt_m.
<?php
// PHP program to swap every
// two bits in a byte.
function swapBitsInPair($x)
{
// Extracting the high bit
// shift it to lowbit
// Extracting the low bit
// shift it to highbit
return (($x & 0xAAAAAAAA) >> 1) |
(($x & 0x55555555) << 1);
}
// Driver Code
$x = 4;
echo swapBitsInPair($x);
// This code is contributed by mits
?>
<script>
// java script program to swap every
// two bits in a byte.
function swapBitsInPair(x)
{
// Extracting the high bit
// shift it to lowbit
// Extracting the low bit
// shift it to highbit
return ((x & 0xAAAAAAAA) >> 1) |
((x & 0x55555555) << 1);
}
// Driver Code
let x = 4;
document.write( swapBitsInPair(x));
// This code is contributed by sravan kumar
</script>
Output:
8
Time Complexity: O(1)
Space Complexity: O(1)
Reference:
https://stackoverflow.com/questions/4788799/swap-every-pair-of-bits-in-byte