Toggle the last m bits

• Difficulty Level : Easy
• Last Updated : 31 May, 2022

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 from 0 to 1 and a bit from 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

Approach: Following are the steps:

1. Calculate num = (1 << m) – 1. This will produce a number num having m 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 bitsunsigned 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 codeint main(){    unsigned int n = 107;    unsigned int m = 4;    cout << toggleLastMBits(n, m);    return 0;}

Java

 // Java implementation to// toggle the last m bitsimport 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 bitsdef 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 = 107m = 4print(toggleLastMBits(n, m)) # This code is contributed# by Anant Agarwal.

C#

 // C# implementation to// toggle the last m bitsusing 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.



Javascript



Output:

100

Time Complexity : O(1)

Auxiliary Space: O(1)

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