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

 `// C++ implementation to ` `// toggle the last m bits ` `#include ` `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 code ` `int` `main() ` `{ ` `    ``unsigned ``int` `n = 107; ` `    ``unsigned ``int` `m = 4; ` `    ``cout << toggleLastMBits(n, m); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation to ` `// toggle the last m bits ` `import` `java.util.*; ` `import` `java.lang.*; ` ` `  `public` `class` `GfG{ ` `     `  `    ``// function to toggle ` `    ``// the last m bits ` `    ``public` `static` `int` `toggleLastMBits ` `                      ``(``int` `n, ``int` `m) ` `    ``{ ` `         `  `        ``// calculating a number  ` `        ``// 'num' having 'm' bits ` `        ``// and all are set ` `        ``int` `num = (``1` `<< m) - ``1``; ` `  `  `        ``// toggle the last m bits ` `        ``// and return the number ` `        ``return` `(n ^ num); ` `    ``} ` `     `  `    ``// Driver function ` `    ``public` `static` `void` `main(String argc[]){ ` `        ``int` `n = ``107``; ` `        ``int` `m = ``4``; ` `        ``n =  toggleLastMBits(n, m); ` `        ``System.out.println(n); ` `               `  `    ``} ` `} ` ` `  `// This code is contributed by Sagar Shukla. `

## Python3

 `# Python implementation to ` `# toggle the last m bits ` ` `  `# function to toggle ` `# the last m bits ` `def` `toggleLastMBits(n,m): ` ` `  `    ``# calculating a number  ` `    ``# 'num' having 'm' bits ` `    ``# and all are set.  ` `    ``num ``=` `(``1` `<< m) ``-` `1` `  `  `    ``# toggle the last m bits ` `    ``# and return the number ` `    ``return` `(n ^ num) ` ` `  `# Driver code ` ` `  `n ``=` `107` `m ``=` `4` `print``(toggleLastMBits(n, m)) ` ` `  `# This code is contributed ` `# by Anant Agarwal. `

## C#

 `// C# implementation to ` `// toggle the last m bits ` `using` `System; ` ` `  `namespace` `Toggle ` `{ ` `    ``public` `class` `GFG ` `    ``{      ` `                 `  `    ``// Function to toggle the last m bits ` `    ``public` `static` `int` `toggleLastMBits(``int` `n, ``int` `m) ` `    ``{ ` `         `  `        ``// Calculating a number 'num' having ` `        ``// 'm' bits and all are set ` `        ``int` `num = (1 << m) - 1; ` ` `  `        ``// Toggle the last m bits ` `        ``// and return the number ` `        ``return` `(n ^ num); ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `Main() { ` `         `  `        ``int` `n = 107, m = 4; ` `        ``n = toggleLastMBits(n, m); ` `        ``Console.Write(n); ` `                 `  `    ``} ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007. `

## PHP

 ` `

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.

My Personal Notes arrow_drop_up

Improved By : nitin mittal

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.