Open In App

Check whether all the bits are set in the given range

Last Updated : 22 Jun, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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 <bits/stdc++.h>

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
<?php
// PHP 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
function 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 = 22;
    $l = 2;
    $r = 3;
    echo allBitsSetInTheGivenRange($n, $l, $r);
    
// This code is contributed by Ajit
?>
JavaScript
<script>

// javascript 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
function 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
    var 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
    var 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
var n = 22;
var l = 2, r = 3;

document.write(allBitsSetInTheGivenRange(
                                   n, l, r));

// This code contributed by Princi Singh 

</script>

Output: 
 

Yes

Time Complexity - O(1)

Space Complexity - O(1)


 


Article Tags :
Practice Tags :

Similar Reads