# Unset bits in the given range

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

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` `#include` `using` `namespace` `std;`   `// Function to toggle bits in the given range` `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` `int` `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 program` `int` `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 range` `import` `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 range` `def` `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 range` `def` `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 ``=` `42` `l ``=` `2` `r ``=` `5` `print``(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 Code` `static` `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)

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.