Related Articles

# Unset bits in the given range

• Difficulty Level : Medium
• Last Updated : 08 Jul, 2021

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`

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.