# How to turn off a particular bit in a number?

Given a number n and a value k, turn off the kth bit in n. Please note that k = 1 means the rightmost bit.

Examples:

```Input:  n = 15, k = 1
Output: 14

Input:  n = 14, k = 1
Output: 14
The rightmost bit was already off, so no change.

Input:  n = 15, k = 2
Output: 13

Input:  n = 15, k = 3
Output: 11

Input:  n = 15, k = 4
Output: 7

Input:  n = 15, k >= 5
Output: 15 ```

The idea is to use bitwise <<, & and ~ operators. Using the expression “~(1 << (k – 1))“, we get a number that has all bits set, except the kth bit. If we do bitwise & of this expression with n, we get a number that has all bits the same as n except the kth bit which is 0.

Below is the implementation of the above idea.

## C++

 `#include ` `using` `namespace` `std;`   `// Returns a number that has all bits same as n` `// except the k'th bit which is made 0` `int` `turnOffK(``int` `n, ``int` `k)` `{` `    ``// k must be greater than 0` `    ``if` `(k <= 0) ``return` `n;`   `    ``// Do & of n with a number with all set bits except` `    ``// the k'th bit` `    ``return` `(n & ~(1 << (k - 1)));` `}`   `// Driver program to test above function` `int` `main()` `{` `    ``int` `n = 15;` `    ``int` `k = 4;` `    ``cout << turnOffK(n, k);` `    ``return` `0;` `}`

## Java

 `// Java program to turn off a particular bit in a number` `import` `java.io.*;`   `class` `TurnOff ` `{` `    ``// Function to returns a number that has all bits same as n` `    ``// except the k'th bit which is made 0` `    ``static` `int` `turnOffK(``int` `n, ``int` `k)` `    ``{` `        ``// k must be greater than 0` `        ``if` `(k <= ``0``) ` `            ``return` `n;` ` `  `        ``// Do & of n with a number with all set bits except` `        ``// the k'th bit` `        ``return` `(n & ~(``1` `<< (k - ``1``)));` `    ``}` `    `  `    ``// Driver program` `    ``public` `static` `void` `main (String[] args) ` `    ``{` `        ``int` `n = ``15``;` `        ``int` `k = ``4``;` `        ``System.out.println(turnOffK(n, k));` `    ``}` `}` `// Contributed by Pramod Kumar`

## Python3

 `# Returns a number that` `# has all bits same as n` `# except the k'th bit` `# which is made 0`   `def` `turnOffK(n,k):`   `    ``# k must be greater than 0` `    ``if` `(k <``=` `0``): ` `        ``return` `n` ` `  `    ``# Do & of n with a number` `    ``# with all set bits except` `    ``# the k'th bit` `    ``return` `(n & ~(``1` `<< (k ``-` `1``)))`   ` `  `# Driver code` `n ``=` `15` `k ``=` `4` `print``(turnOffK(n, k))`   `# This code is contributed` `# by Anant Agarwal.`

## C#

 `// C# program to turn off a ` `// particular bit in a number` `using` `System;`   `class` `GFG` `{` `    `  `    ``// Function to returns a number ` `    ``// that has all bits same as n` `    ``// except the k'th bit which is ` `    ``// made 0` `    ``static` `int` `turnOffK(``int` `n, ``int` `k)` `    ``{` `        ``// k must be greater than 0` `        ``if` `(k <= 0) ` `            ``return` `n;`   `        ``// Do & of n with a number ` `        ``// with all set bits except` `        ``// the k'th bit` `        ``return` `(n & ~ (1 << (k - 1)));` `    ``}` `    `  `    ``// Driver Code` `    ``public` `static` `void` `Main () ` `    ``{` `        ``int` `n = 15;` `        ``int` `k = 4;` `        ``Console.Write(turnOffK(n, k));` `    ``}` `}`   `// This code is contributed by Nitin Mittal.`

## PHP

 ``

## Javascript

 ``

Output

`7`

Time Complexity: O(1)
Auxiliary Space:  O(1)

Method 2: Using XOR operator.

Left shift 1 by (k – 1) times and check if kth bit is set or not, if set then take XOR for togging the kth bit.

Below is the implementation of the above approach:

## C++

 `#include ` `using` `namespace` `std;`   `// Returns a number that has all bits same as n` `// except the k'th bit which is made 0` `int` `turnOffK(``int` `n, ``int` `k)` `{` `    ``// k must be greater than 0` `    ``if` `(k <= 0)` `        ``return` `n;`   `    ``// Check if the kth bit is set or not` `    ``if` `(n & (1 << (k - 1))) {`   `        ``// Toggle the kth bit` `        ``n = (n ^ (1 << (k - 1)));` `    ``}`   `    ``return` `n;` `}`   `// Driver program to test above function` `int` `main()` `{` `    ``int` `n = 15;` `    ``int` `k = 4;` `    ``cout << turnOffK(n, k);` `    ``return` `0;` `}`   `// This code is contributed by hkdass001`

## Java

 `// Java implementation of the approach`   `import` `java.util.*;`   `public` `class` `GFG {` `    ``// Returns a number that has all bits same as n` `    ``// except the k'th bit which is made 0` `    ``static` `int` `turnOffK(``int` `n, ``int` `k)` `    ``{` `        ``// k must be greater than 0` `        ``if` `(k <= ``0``)` `            ``return` `n;`   `        ``// Check if the kth bit is set or not` `        ``if` `((n & (``1` `<< (k - ``1``))) != ``0``) {`   `            ``// Toggle the kth bit` `            ``n = (n ^ (``1` `<< (k - ``1``)));` `        ``}`   `        ``return` `n;` `    ``}`   `    ``// Driver program to test above function` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `n = ``15``;` `        ``int` `k = ``4``;` `        ``System.out.println(turnOffK(n, k));` `    ``}` `}`   `// This code is contributed by Karandeep1234`

## Python3

 `def` `turn_off_k(n: ``int``, k: ``int``) ``-``> ``int``:` `    ``# k must be greater than 0` `    ``if` `k <``=` `0``:` `        ``return` `n` `    `  `    ``# Check if the kth bit is set or not` `    ``if` `n & (``1` `<< (k ``-` `1``)):` `      `  `        ``# Toggle the kth bit` `        ``n ``=` `(n ^ (``1` `<< (k ``-` `1``)))` `    `  `    ``return` `n`   `# Driver program to test above function` `if` `__name__ ``=``=` `'__main__'``:` `    ``n ``=` `15` `    ``k ``=` `4` `    ``print``(turn_off_k(n, k))`

## C#

 `// C# implementation of the approach` `using` `System;`   `public` `class` `GFG {`   `    ``// Returns a number that has all bits same as n` `    ``// except the k'th bit which is made 0` `    ``static` `int` `turnOffK(``int` `n, ``int` `k)` `    ``{` `        ``// k must be greater than 0` `        ``if` `(k <= 0)` `            ``return` `n;`   `        ``// Check if the kth bit is set or not` `        ``if` `((n & (1 << (k - 1))) != 0) {`   `            ``// Toggle the kth bit` `            ``n = (n ^ (1 << (k - 1)));` `        ``}`   `        ``return` `n;` `    ``}` `    ``// Driver Code` `    ``static` `public` `void` `Main()` `    ``{` `        ``int` `n = 15;` `        ``int` `k = 4;` `        ``Console.Write(turnOffK(n, k));` `        ``// Code` `    ``}` `}` `// This code is contributed by Akshay` `// Tripathi(akshaytripathi19410)_`

## Javascript

 `function` `turnOffK(n, k) {` `    ``// k must be greater than 0` `    ``if` `(k <= 0) {` `        ``return` `n;` `    ``}`   `    ``// Check if the kth bit is set or not` `    ``if` `(n & (1 << (k - 1))) {` `        ``// Toggle the kth bit` `        ``n = (n ^ (1 << (k - 1)));` `    ``}`   `    ``return` `n;` `}`   `// Driver program to test above function` `let n = 15;` `let k = 4;` `console.log(turnOffK(n, k));`

Output

`7`

Time Complexity: O(1)
Auxiliary Space: O(1)

Exercise: Write a function turnOnK() that turns the k’th bit on.