Related Articles
Swap every two bits in bytes
• Difficulty Level : Medium
• Last Updated : 18 Apr, 2018

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:
x = ((x & 0b10101010) >> 1) | ((x & 0b01010101) <> 1 extracts the high bit position and shifts it to the low bit position.
Similarly the expression (x & 0b01010101) << 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 & 0b10101010) >> 1) = 00001010 >> 1
= 00000101
((x & 0b01010101) << 1) = 00010000 <> 1) | ((x & 0b01010101) << 1) = 00100101
```

Below is the implementation of the above:
Note: This solution works for only 8 bit.

## 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 & 0b10101010) >> 1) |  ` `            ``((x & 0b01010101) << 1);     ` `} ` ` `  `/* Driver function to test above function */` `int` `main() ` `{ ` `    ``unsigned ``int` `x = 4;  ` `    ``cout << swapBitsInPair(x);     ` `    ``return` `0; ` `} `

## 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 & 0b10101010) >> ``1``) |  ` `                ``((x & 0b01010101) << ``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 & ``0b10101010``) >> ``1``) ``or` `((x & ``0b01010101``) << ``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 & 010101010) >> 1) |  ` `                ``((x & 001010101) << 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` `& 0b01010101) << 1);  ` `} ` ` `  `    ``// Driver Code ` `    ``\$x` `= 4;  ` `    ``echo` `swapBitsInPair(``\$x``);  ` ` `  `// This code is contributed by mits  ` `?> `

Output:

```8
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :