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");
}
Output
Set
Time Complexity: O(1)
Auxiliary Space: O(1)