# Toggle the last m bits

Given a non-negative number n. The problem is to toggle the last m bits in the binary representation of n. A toggle operation flips a bit 0 to 1 and a bit 1 to 0.

Constraint: 1 <= m <= n.

Examples:

```Input : n = 21, m = 2
Output : 22
(21)10 = (10101)2
(22)10 = (10110)2
The last two bits in the binary
representation of 21 are toggled.

Input : n = 107, m = 4
Output : 100
```

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

Approach: Following are the steps:

1. Calculate num = (1 << m) – 1. This will produce a number num having m number of bits and all will be set.
2. Now, perform n = n ^ num. This will toggle the last m bits in n.
```// C++ implementation to toggle the last m bits
#include <bits/stdc++.h>

using namespace std;

// function to toggle the last m bits
unsigned int toggleLastMBits(unsigned int n,
unsigned int m)
{
// calculating a number 'num' having 'm' bits
// and all are set
unsigned int num = (1 << m) - 1;

// toggle the last m bits and return the number
return (n ^ num);
}

// Driver program to test above
int main()
{
unsigned int n = 107;
unsigned int m = 4;
cout << toggleLastMBits(n, m);
return 0;
}
```

Output:

```100
```

This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
2 Average Difficulty : 2/5.0
Based on 2 vote(s)