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

• Difficulty Level : Medium
• Last Updated : 10 Aug, 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)

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

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

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :