Related Articles
Toggle the last m bits
• Difficulty Level : Easy
• Last Updated : 18 May, 2018

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.