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