Open In App

Toggle the last m bits

Last Updated : 31 May, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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




<?php
// PHP implementation to
// toggle the last m bits
 
    // function to toggle
    // the last m bits
    function 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;
    echo toggleLastMBits($n, $m);
    return 0;
}
 
// This code is contributed by nitin mittal.
?>


Javascript




<script>
 
// Javascript implementation to
// toggle the last m bits
 
// function to toggle
// the last m bits
function toggleLastMBits(n, m)
{
     
    // calculating a number
    // 'num' having 'm' bits
    // and all are set.
    var num = (1 << m) - 1;
 
    // toggle the last m bits
    // and return the number
    return (n ^ num);
}
 
// Driver code
var  n = 107;
var  m = 4;
document.write( toggleLastMBits(n, m));
 
</script>


Output: 

100

Time Complexity : O(1)

Auxiliary Space: O(1)

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads