Swap every two bits in bytes

Last Updated : 22 May, 2022

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++

 `// C++ program to swap every two bits in a byte.` `#include` `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

 `// 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.`

Python3

 `# 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#

 `// 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

 `> 1) | ` `           ``((``\$x` `& 0x55555555) << 1); ` `}`   `    ``// Driver Code` `    ``\$x` `= 4; ` `    ``echo` `swapBitsInPair(``\$x``); `   `// This code is contributed by mits ` `?>`

Javascript

 ``

Output:

`8`

Time Complexity: O(1)

Space Complexity: O(1)

Previous
Next