Check whether all the bits are unset in the given range or not
Last Updated :
13 Jun, 2022
Given a non-negative number n and two values l and r. The problem is to check whether all the bits are unset 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 = 17, l = 2, r = 4
Output : Yes
(17)10 = (10001)2
The bits in the range 2 to 4 are all unset.
Input : n = 36, l = 3, r = 5
Output : No
(36)10 = (100100)2
The bits in the range 3 to 5 are all not unset.
Approach: Following are the steps:
- 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.
- Calculate new_num = n & num.
- If new_num == 0, return “Yes” (all bits are unset in the given range).
- Else return “No” (all bits are not unset in the given range).
C++
#include <bits/stdc++.h>
using namespace std;
string allBitsSetInTheGivenRange(unsigned int n,
unsigned int l,
unsigned int r)
{
int num = ((1 << r) - 1) ^
((1 << (l - 1)) - 1);
int new_num = n & num;
if (new_num == 0)
return "Yes" ;
return "No" ;
}
int main()
{
unsigned int n = 17;
unsigned int l = 2, r = 4;
cout << allBitsSetInTheGivenRange(n, l, r);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static String allBitsSetInTheGivenRange( int n,
int l,
int r)
{
int num = (( 1 << r) - 1 ) ^
(( 1 << (l - 1 )) - 1 );
int new_num = n & num;
if (new_num == 0 )
return "Yes" ;
return "No" ;
}
public static void main (String[] args)
{
int n = 17 ;
int l = 2 ;
int r = 4 ;
System.out.println(
allBitsSetInTheGivenRange(n, l, r));
}
}
|
Python 3
def allBitsSetInTheGivenRange(n, l, r):
num = (( 1 << r) - 1 ) ^ (( 1 << (l - 1 )) - 1 )
new_num = n & num
if (new_num = = 0 ):
return "Yes"
return "No"
if __name__ = = "__main__" :
n = 17
l = 2
r = 4
print (allBitsSetInTheGivenRange(n, l, r))
|
C#
using System;
public class GFG{
static String allBitsSetInTheGivenRange( int n,
int l,
int r)
{
int num = ((1 << r) - 1) ^
((1 << (l - 1)) - 1);
int new_num = n & num;
if (new_num == 0)
return "Yes" ;
return "No" ;
}
static public void Main (){
int n = 17;
int l = 2;
int r = 4;
Console.WriteLine(
allBitsSetInTheGivenRange(n, l, r));
}
}
|
PHP
<?php
function allBitsSetInTheGivenRange( $n ,
$l , $r )
{
$num = ((1 << $r ) - 1) ^
((1 << ( $l - 1)) - 1);
$new_num = $n & $num ;
if ( $new_num == 0)
return "Yes" ;
return "No" ;
}
$n = 17;
$l = 2; $r = 4;
echo allBitsSetInTheGivenRange( $n ,
$l , $r );
?>
|
Javascript
<script>
function allBitsSetInTheGivenRange(n, l, r)
{
var num = ((1 << r) - 1) ^
((1 << (l - 1)) - 1);
var new_num = n & num;
if (new_num == 0)
return "Yes" ;
return "No" ;
}
var n = 17;
var l = 2, r = 4;
document.write( allBitsSetInTheGivenRange(n, l, r));
</script>
|
Output:
Yes
Time Complexity : O(1)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...