# C++ program to swap bits in a number

Today we will learn how to swap bits in C++ language.

Given an integer n and two-bit positions a1 and a2 inside it, swap bits at the given positions. The given positions are from the least significant bit.

Example-

Input: n = 20

a1 = 2, a2 = 3

n = 10111

after swapping = 11000 = 24

o/p – 24

This is a classic problem of bit manipulation, in which we have to make use of the XOR gate logic, the XOR of two number x & y gives a number which has all bits 1 where bits of x & y differ.

This problem uses the concept of left shift (>>) and XOR (^) bit manipulations.

The left shift operator shifts the bits in the shift expression to the left by the specified number of positions in the additive expression.

Now if we follow 3 steps

- x=x^y
- y=x^y &
- x=x^y

we will obtain the swapping of x and y bits. We will use the same logic to solve this question.

Below is our given C++ program that will able to swap bits in a number:

#include <iostream> using namespace std; int main(int argc, const char * argv[]) { cout<<"Enter int \n"; unsigned int n; cin>>n; unsigned int a1,a2; cout<<"enter value to a1 and a2\n"; cin>>a1>>a2; unsigned int bone = (n >> a1) & 1; unsigned int btwo = (n >> a2) & 1; // XOR the two bits unsigned int x = (bone ^ btwo); //Put the XOR bit back to their original positions x = (x << a1) | (x << a2); //XOR x with the original number then we will get the final swapper number unsigned int result = n ^ x; cout<<"The answer - "<<result<<endl; return 0; }

If we run the above code, we will get the output as you can see below:

Enter integer number 20 enter value to a1 and a2 3 2 The answer is 24

Also read: C++ program to set bits in all numbers from 1 to n

## Leave a Reply