Check whether all the bits are set in the given range

• Difficulty Level : Expert
• Last Updated : 22 Jun, 2022

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.

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 notstring 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 aboveint 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 notclass 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 notdef 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 coden, l, r = 22, 2, 3print(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 notusing 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.



Javascript



Output:

Yes

Time Complexity – O(1)

Space Complexity – 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.