# Check whether all the bits are set in the given range

Given a non-negative number n and two values l and r. The problem is to check whether all the bits are set or not in the range l to r in the binary representation of n.
Constraint: 1 <= l <= r <= number of bits in the binary representation of n.

Examples:

```Input : n = 22, l = 2, r = 3
Output : Yes
(22)10 = (10110)2
The bits in the range 2 to 3 are all set.

Input : n = 47, l = 2, r = 5
Output : No
(47)10 = (101111)2
The bits in the range 2 to 5 are all not set.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Following are the steps:

1. Calculate num = ((1 << r) – 1) ^ ((1 << (l-1)) – 1). This will produce a number num having r number of bits and bits in the range l to r are the only set bits.
2. Calculate new_num = n & num.
3. If num == new_num, return “Yes” (all bits are set in the given range).
4. Else return “No” (all bits are not set in the given range).

## C++

 `// C++ implementation to check whether all the bits ` `// are set in the given range or not ` `#include ` ` `  `using` `namespace` `std; ` ` `  `// function to check whether all the bits ` `// are set in the given range or not ` `string allBitsSetInTheGivenRange(unsigned ``int` `n, ` `                                 ``unsigned ``int` `l, unsigned ``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); ` `     `  `    ``// new number which will only have one or more  ` `    ``// set bits in the range l to r and nowhere else ` `    ``int` `new_num = n & num; ` `     `  `    ``// if both are equal, then all bits are set ` `    ``// in the given range ` `    ``if` `(num == new_num) ` `        ``return` `"Yes"``; ` `         `  `    ``// else all bits are not set     ` `    ``return` `"No"``;     ` `} ` ` `  `// Driver program to test above ` `int` `main() ` `{ ` `    ``unsigned ``int` `n = 22; ` `    ``unsigned ``int` `l = 2, r = 3; ` `    ``cout << allBitsSetInTheGivenRange(n, l, r); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation to check whether all  ` `// the bits are set in the given range or not ` `class` `GFG { ` `         `  `    ``// function to check whether all the bits ` `    ``// are set in the given range or not ` `    ``static` `String allBitsSetInTheGivenRange(``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``); ` `         `  `        ``// new number which will only have one  ` `        ``// or more set bits in the range l to r ` `        ``// and nowhere else ` `        ``int` `new_num = n & num; ` `         `  `        ``// if both are equal, then all bits are ` `        ``// set in the given range ` `        ``if` `(num == new_num) ` `            ``return` `"Yes"``; ` `             `  `        ``// else all bits are not set  ` `        ``return` `"No"``;  ` `    ``} ` `     `  `    ``//Driver code ` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `        ``int` `n = ``22``; ` `        ``int` `l = ``2``, r = ``3``; ` `         `  `        ``System.out.print(allBitsSetInTheGivenRange( ` `                                           ``n, l, r)); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python3

 `# Python3 implementation to check ` `# whether all the bits are set in ` `# the given range or not ` ` `  `# Function to check whether all the bits ` `# are set in the given range or not ` `def` `allBitsSetInTheGivenRange(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``) ` `     `  `    ``# new number which will only have ` `    ``# one or more set bits in the range ` `    ``# l to r and nowhere else ` `    ``new_num ``=` `n & num ` `     `  `    ``# if both are equal, then all bits ` `    ``# are set in the given range ` `    ``if` `(num ``=``=` `new_num): ` `        ``return` `"Yes"` `         `  `    ``# else all bits are not set  ` `    ``return` `"No"` ` `  `# Driver code ` `n, l, r ``=` `22``, ``2``, ``3` `print``(allBitsSetInTheGivenRange(n, l, r)) ` ` `  `# This code is contributed by Anant Agarwal. `

## C#

 `// C# implementation to check whether all the bits ` `// are set in the given range or not ` `using` `System; ` ` `  `class` `GFG ` `{ ` `    ``// function to check whether all the bits ` `    ``// are set in the given range or not ` `    ``static` `String allBitsSetInTheGivenRange(``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); ` `          `  `        ``// new number which will only have one or more  ` `        ``// set bits in the range l to r and nowhere else ` `        ``int` `new_num = n & num; ` `          `  `        ``// if both are equal, then all bits are set ` `        ``// in the given range ` `        ``if` `(num == new_num) ` `            ``return` `"Yes"``; ` `              `  `        ``// else all bits are not set     ` `        ``return` `"No"``;     ` `    ``} ` `     `  `    ``//Driver code ` `    ``public` `static` `void` `Main () ` `    ``{ ` `        ``int` `n = 22; ` `        ``int` `l = 2, r = 3; ` `        ``Console.Write(allBitsSetInTheGivenRange(n, l, r)); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## PHP

 ` `

Output:

```Yes
```

This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Improved By : jit_t

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.