Given two positive integers n and k. The problem is to check whether the bit at position k from the right in the binary representation of n is set (‘1’) or unset (‘0’).
Constraints: 1 <= k <= number of bits in the binary representation of n.
Examples:
Input : n = 10, k = 2 Output : Set (10)10 = (1010)2 The 2nd bit from the right is set. Input : n = 21, k = 4 Output : Unset
Approach#1: Following are the steps:
- Calculate new_num = (n >> (k – 1)).
- if (new_num & 1) == 1 then bit is “Set”, else “Unset”.
// C++ implementation to check whether the bit // at given position is set or unset #include <bits/stdc++.h> using namespace std;
// function to check whether the bit // at given position is set or unset bool bitAtGivenPosSetOrUnset(unsigned int n,
unsigned int k)
{ int new_num = n >> (k - 1);
// if it results to '1' then bit is set,
// else it results to '0' bit is unset
return (new_num & 1);
} // Driver program to test above code int main()
{ unsigned int n = 10, k = 2;
if (bitAtGivenPosSetOrUnset(n, k))
cout << "Set" ;
else
cout << "Unset" ;
return 0;
} |
// Java program to // check the set bit // at kth position import java.io.*;
class GFG {
// function to check whether // the bit at given position // is set or unset static int bitAtGivenPosSetOrUnset
( int n, int k)
{ // to shift the kth bit
// at 1st position
int new_num = n >> (k - 1 );
// Since, last bit is now
// kth bit, so doing AND with 1
// will give result.
return (new_num & 1 );
} public static void main (String[] args)
{
// K and n must be greater than 0
int n = 10 , k = 2 ;
if (bitAtGivenPosSetOrUnset(n, k)== 1 )
System.out.println( "Set" );
else
System.out.println( "Unset" );
}
} //This code is contributed by Gitanjali |
# python implementation to check # whether the bit at given # position is set or unset import math
#function to check whether the bit # at given position is set or unset def bitAtGivenPosSetOrUnset( n, k):
new_num = n >> (k - 1 )
#if it results to '1' then bit is set,
#else it results to '0' bit is unset
return (new_num & 1 )
# Driver code n = 10
k = 2
if (bitAtGivenPosSetOrUnset(n, k)):
print ( "Set" )
else :
print ( "Unset" )
#This code is contributed by Gitanjali |
// C# program to check the set bit // at kth position using System;
class GFG {
// function to check whether
// the bit at given position
// is set or unset
static int bitAtGivenPosSetOrUnset(
int n, int k)
{
// to shift the kth bit
// at 1st position
int new_num = n >> (k - 1);
// Since, last bit is now
// kth bit, so doing AND with 1
// will give result.
return (new_num & 1);
}
// Driver code
public static void Main ()
{
// K and n must be greater
// than 0
int n = 10, k = 2;
if (bitAtGivenPosSetOrUnset(n, k)==1)
Console.Write( "Set" );
else
Console.Write( "Unset" );
}
} // This code is contributed by Sam007. |
<?php // PHP implementation to check whether the bit // at given position is set or unset // function to check whether the bit // at given position is set or unset function bitAtGivenPosSetOrUnset( $n , $k )
{ $new_num = $n >> ( $k - 1);
// if it results to '1' then bit is set,
// else it results to '0' bit is unset
return ( $new_num & 1);
} // Driver Code
$n = 10;
$k = 2;
if (bitAtGivenPosSetOrUnset( $n , $k ))
echo "Set" ;
else
echo "Unset" ;
// This code is contributed by Sam007 ?> |
<script> // javascript program to // check the set bit // at kth position // function to check whether // the bit at given position // is set or unset function bitAtGivenPosSetOrUnset
(n, k)
{ // to shift the kth bit
// at 1st position
let new_num = n >> (k - 1);
// Since, last bit is now
// kth bit, so doing AND with 1
// will give result.
return (new_num & 1);
} // Driver Function // K and n must be greater than 0
let n = 10, k = 2;
if (bitAtGivenPosSetOrUnset(n, k)==1)
document.write( "Set" );
else
document.write( "Unset" );
// This code is contributed by susmitakundugoaldanga.
</script> |
Output:
Set
Time Complexity: O(1)
Auxiliary Space: O(1)
Approach#2: We can use the left shift to solve this problem. Following are the steps:
- New_num = ( 1 << ( k – 1 ) )
- If ( num & New_num ) == 1 then bit is set else unset.
// C++ implementation to check whether the bit // at given position is set or unset // Using left shift operator #include <bits/stdc++.h> using namespace std;
// function Using left shift operator bool bitAtGivenPosSetOrUnset(unsigned int n,
unsigned int k)
{ int New_num = 1 << (k - 1);
// Returning result return (New_num & n);
} // Driver program to test above code int main()
{ unsigned int n = 10, k = 2;
if (bitAtGivenPosSetOrUnset(n, k))
cout << "Set" ;
else
cout << "Unset" ;
return 0;
} |
// Java program to // check the set bit // at kth position import java.io.*;
class GFG {
// function to check whether // the bit at given position // is set or unset static int bitAtGivenPosSetOrUnset
( int n, int k)
{ // to shift the kth bit
// at 1st position
int New_num = 1 << (k - 1 );
// Since, last bit is now
// kth bit, so doing AND with 1
// will give result.
return (New_num & n);
} public static void main (String[] args)
{
// K and n must be greater than 0
int n = 10 , k = 2 ;
if (bitAtGivenPosSetOrUnset(n, k)==k)
System.out.println( "Set" );
else
System.out.println( "Unset" );
}
} //This code is contributed by sam snehil |
# python implementation to check # whether the bit at given # position is set or unset # by Using left shift operator import math
#function to check whether the bit # at given position is set or unset # by Using left shift operator def bitAtGivenPosSetOrUnset( n, k):
New_num = 1 << (k - 1 )
# returning result
return (New_num & n)
# Driver code n = 10
k = 2
if (bitAtGivenPosSetOrUnset(n, k)):
print ( "Set" )
else :
print ( "Unset" )
#This code is contributed by sam snehil |
// C# program to check the set bit // at kth position Using left shift operator using System;
class GFG {
// Function using left shift operator
static int bitAtGivenPosSetOrUnset(
int n, int k)
{
int New_num = 1 << (k - 1);
// Returning result
return (New_num & n);
}
// Driver code
public static void Main ()
{
int n = 10, k = 2;
if (bitAtGivenPosSetOrUnset(n, k) != 0)
Console.Write( "Set" );
else
Console.Write( "Unset" );
}
} // This code is contributed by Sam snehil. |
// javascript program to check set bit using left shift operator // function using left shift operator function bitAtGivenPosSetOrUnset
(n, k)
{ let New_num = 1 << (k -1);
// Returning result
return (New_num & n);
} // Driver Function // K and n must be greater than 0 let n = 10, k = 2;
if (bitAtGivenPosSetOrUnset(n, k))
console.log( "Set" );
else
console.log( 'Unset' )
// This code is contributed by sam snehil.
|
<?php // PHP implementation to check whether the bit // at given position is set or unset Using left shift operator // function demonstrate left shift operator working function bitAtGivenPosSetOrUnset( $n , $k )
{ $New_num = 1 << ( $k - 1);
return ( $New_num & $n );
} // Driver Code
$n = 10;
$k = 2;
if (bitAtGivenPosSetOrUnset( $n , $k ))
echo "Set" ;
else
echo "Unset" ;
// This code is contributed by Sam snehil ?> |
Output:
Set
Time Complexity: O(1)
Auxiliary Space: O(1)
Approach#3: We can use power of 2 to check if the Bitwise AND of ‘(k-1)th power of 2’ and num is 1 or not. If it is 1 , the bit is set else unset.
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std;
// Function to check if the kth bit is set // or not in num bool bitAtGivenPosSetOrUnset( int n, int k)
{ int new_num = pow (2,(k -1));
int x=new_num & n; //storing bitwise AND
if (x > 0)
{ return true ; // return true if kth bit is set
}
else {
return false ; // else return false
}
} // Drive Code int main()
{ int n = 10, k = 2;
// Function call
if (bitAtGivenPosSetOrUnset(n, k))
cout << "Set" ;
else
cout << "Unset" ;
return 0;
} // This code is contributed by nikhilsainiofficial546 |
import java.lang.Math;
public class Main {
// Function to check if the kth bit is set
// or not in num
static boolean bitAtGivenPosSetOrUnset( int n, int k)
{
int new_num = ( int ) Math.pow( 2 , k - 1 );
int x = new_num & n; // storing bitwise AND
if (x > 0 ) {
return true ; // return true if kth bit is set
}
else {
return false ; // else return false
}
}
// Driver Code
public static void main(String[] args) {
int n = 10 , k = 2 ;
// Function call
if (bitAtGivenPosSetOrUnset(n, k))
System.out.println( "Set" );
else
System.out.println( "Unset" );
}
} |
# Python3 implementation of the above approach # Function to check if the kth bit is set or not in n def bitAtGivenPosSetOrUnset(n, k):
new_num = pow ( 2 , k - 1 )
# Check if the kth bit is set or not by performing bitwise AND
x = new_num & n
# Return True if kth bit is set, else False
if x > 0 :
return True
else :
return False
# Drive Code n = 10
k = 2
# Function call if bitAtGivenPosSetOrUnset(n, k):
print ( "Set" )
else :
print ( "Unset" )
# This code is contributed by nikhilsainiofficial546
|
using System;
public class Program
{ // Function to check if the kth bit is set
// or not in num public static bool bitAtGivenPosSetOrUnset( int n, int k)
{ int new_num = ( int )Math.Pow(2, (k - 1));
int x = new_num & n; //storing bitwise AND
if (x > 0)
{
return true ; // return true if kth bit is set
}
else
{
return false ; // else return false
}
} // Drive Code
public static void Main()
{
int n = 10, k = 2;
// Function call
if (bitAtGivenPosSetOrUnset(n, k))
Console.WriteLine( "Set" );
else
Console.WriteLine( "Unset" );
}
} //This code is contributed by NarasingaNikhil |
// Javascript implementation of the above approach // Function to check if the kth bit is set or not in num function bitAtGivenPosSetOrUnset(n, k) {
const new_num = Math.pow(2, k - 1);
const x = new_num & n; // storing bitwise AND
if (x > 0) {
return true ; // return true if kth bit is set
} else {
return false ; // else return false
}
} // Drive Code const n = 10, k = 2; // Function call if (bitAtGivenPosSetOrUnset(n, k)) {
console.log( "Set" );
} else {
console.log( "Unset" );
} |
Set
Time Complexity: O(1)
Auxiliary Space: O(1)