# C++ program to Rotate bits

Hey there! In this tutorial, we will learn how to rotate bits of a number using the C++ programming language. Here is what rotation means:

Suppose there is a number 13 and we want to left rotate its bits by 2 places.

13 is 00001101 in binary. Left rotating bits by 2 places gives Answer is 00110100 which is 52 in decimal.

Let us see how we can do this.

## Use of bitwise operators

For achieving this we will use some bitset operators:

**>>(Right Shift):**Shifts the bits of a number towards the right by given places.

12>>2 //shifts digits of 12(00001100) by 2 places //00000011 is the answer

**<<(Left Shift):**Shifts the bits of a number towards the left by given places.

12<<2 //shifts digits of 12(00001100) by 2 places //00110000 is the answer

**|(Bitwise OR):**Performs OR operation on bits.

00000101 | 00001100 //00001101 is the answer

## Implementation

- First, shift the bits of the given number by the given places(p).
- We need to take into account the
**first/last**‘p’ bits which get lost due to shifting but we need at the**end/beginning**to complete rotation so we use bitwise OR operator. - Bitwise OR it with right-shifted(to recover
**first**‘p’ bits) or left-shifted(to recover**last**‘p’ bits) the given number by (8-p) places.

Below is the code implementing left rotate and right rotate:

#include <bits/stdc++.h> using namespace std; int main() { int number = 13;//00001101 int p = 2; bitset <8> binary(number); //converting it in 8 places binary p=p%8; //rotating more than 8 times is repetition // to_ullong() converts binary into unsigned long long cout << ((binary<<p)|(binary>>(8-p))).to_ullong() << endl; //left shift gives 00110100 cout << ((binary>>p)|(binary<<(8-p))).to_ullong() << endl; //right shift gives 01000011 return 0; }

Output:

52 67

That’s it. Hope you understood.

## Leave a Reply