# Check whether the bit at given position is set or unset

• Difficulty Level : Medium
• Last Updated : 23 Jun, 2022

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:

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

## Javascript

 ``

Output:

`Set`

Time Complexity: 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++

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

## Javascript

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

## Python3

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

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

## PHP

 ``

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

Output:

`Set`

My Personal Notes arrow_drop_up