# Unset bits in the given range

Given a non-negative number n and two values l and r. The problem is to unset the bits in the range l to r in the binary representation of n, i.e, to unset bits from the rightmost lth bit to the rightmost rth bit.
Constraint: 1 <= l <= r <= number of bits in the binary representation of n.
Examples:

Input : n = 42, l = 2, r = 5
Output : 32
(42)10 = (101010)2
(32)10 = (100000)2
The bits in the range 2 to 5 in the binary
representation of 42 have been unset.

Input : n = 63, l = 1, r = 4
Output : 48

Approach: Following are the steps:

1. Calculate num = (1 << (sizeof(int) * 8 – 1)) – 1. This will produce the highest positive integer num. All the bits in num will be set.
2. Toggle bits in the range l to r in num. Refer this post.
3. Now, perform n = n & num. This will unset the bits in the range l to r in n.
4. Return n.

Note: The sizeof(int) has been used as input is of int data type. For large inputs you can use long int or long long int datatypes in place of int

## C++

 // C++ implementation to unset bits in the given range#includeusing namespace std; // Function to toggle bits in the given rangeint toggleBitsFromLToR(int n, int l, int r){    // calculating a number 'num' having 'r' number of bits    // and bits in the range l to r are the only set bits    int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1);     // toggle the bits in the range l to r in 'n'    // and return the number    return (n ^ num);} // Function to unset bits in the given rangeint unsetBitsInGivenRange(int n, int l, int r){    // 'num' is the highest positive integer number    // all the bits of 'num' are set    long num = (1ll << (4 * 8 - 1)) - 1;     // toggle the bits in the range l to r in 'num'    num = toggleBitsFromLToR(num, l, r);     // unset the bits in the range l to r in 'n'    // and return the number    return (n & num);} // driver programint main(){    int n = 42;    int l = 2, r = 5;    cout<< unsetBitsInGivenRange(n, l, r);    return 0;}

## Java

 // Java implementation to unset bits in the given rangeimport java.io.*; class GFG {    // Function to toggle bits in the given range    static int toggleBitsFromLToR(int n, int l, int r)    {        // calculating a number 'num' having 'r' number of bits        // and bits in the range l to r are the only set bits        int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1);          // toggle the bits in the range l to r in 'n'        // and return the number        return (n ^ num);    }         // Function to unset bits in the given range    static int unsetBitsInGivenRange(int n, int l, int r)    {        // 'num' is the highest positive integer number        // all the bits of 'num' are set        int num = (1 << (4 * 8 - 1)) - 1;          // toggle the bits in the range l to r in 'num'        num = toggleBitsFromLToR(num, l, r);          // unset the bits in the range l to r in 'n'        // and return the number        return (n & num);    }         // driver program    public static void main (String[] args)     {        int n = 42;        int l = 2, r = 5;        System.out.println(unsetBitsInGivenRange(n, l, r));    }} // Contributed by Pramod Kumar

## Python3

 # python implementation to unset bits# in the given range # Function to toggle bits in the# given rangedef toggleBitsFromLToR(n, l, r):         # calculating a number 'num'     # having 'r' number of bits    # and bits in the range l to    # r are the only set bits    num = (((1 << r) - 1) ^            ((1 << (l - 1)) - 1))     # toggle the bits in the range     # l to r in 'n' and return the     # number    return (n ^ num)     # Function to unset bits in the# given rangedef unsetBitsInGivenRange(n, l, r):         # 'num' is the highest positive    # integer number all the bits    # of 'num' are set    num = (1 << (4 * 8 - 1)) - 1     # toggle the bits in the range     # l to r in 'num'    num = toggleBitsFromLToR(num, l, r)     # unset the bits in the range     # l to r in 'n' and return the    # number    return (n & num) # Driver code    n = 42l = 2r = 5print(unsetBitsInGivenRange(n, l, r)) # This code is contributed by Sam007.

## C#

 // C#  implementation to unset// bits in the given range using System;  class GFG {          // Function to toggle bits in the given range     static int toggleBitsFromLToR(int n, int l, int r)     {         // calculating a number 'num'        // having 'r' number of bits         // and bits in the range l         // to r are the only set bits         int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1);           // toggle the bits in the        // range l to r in 'n'         // and return the number         return (n ^ num);     }           // Function to unset bits in the given range     static int unsetBitsInGivenRange(int n, int l, int r)     {         // 'num' is the highest         // positive integer number         // all the bits of 'num'        // are set         int num = (1 << (2 * 8 - 1)) - 1;           // toggle the bits in        // the range l to r in 'num'         num = toggleBitsFromLToR(num, l, r);           // unset the bits in         // the range l to r in 'n'         // and return the number         return (n & num);     }       // Driver Codestatic public void Main() {         int n = 42;     int l = 2, r = 5;     Console.WriteLine(unsetBitsInGivenRange(n, l, r)); } }   // This Code is  Contributed by akt_mit

## PHP



## Javascript



Output:

32

Time Complexity : O(1)

Auxiliary Space: O(1)

Previous
Next