# 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
• <<(Left Shift): Shifts the bits of a number towards the left by given places.
```12<<2
//shifts digits of 12(00001100) by 2 places
• |(Bitwise OR): Performs OR operation on bits.
```00000101 | 00001100

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