Related Articles
Check whether the bit at given position is set or unset
• Difficulty Level : Medium
• Last Updated : 09 Nov, 2020

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Following are the steps:

1. Calculate new_num = (n >> (k – 1)).
2. if (new_num & 1) == 1 then bit is “Set”, else “Unset”.

## C++

 `// C++ implementation to check whether the bit ` `// at given position is set or unset ` `#include ` `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 ` `int` `main() ` `{ ` `    ``unsigned ``int` `n = 10, k = 2; ` `    ``if` `(bitAtGivenPosSetOrUnset(n, k)) ` `        ``cout << ``"Set"``; ` `    ``else` `        ``cout << ``"Unset"``; ` `    ``return` `0; ` `} `

## Java

 `// 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 `

## Python3

 `# 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#

 `// 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

 `> (``\$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 ` `?> `

Output:

```Set
```

Time Complexity: O(1).

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :