Toggle the last m bits

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


 

Comment