How to turn off a particular bit in a number?

Difficulty Level: Rookie

Given a number n and a value k, turn of the k’th bit in n.

Examples:

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

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 expression "~(1 << (k - 1))“, we get a number which has all bits set, except the k’th bit. If we do bitwise & of this expression with n, we get a number which has all bits same as n except the k’th bit which is 0.

Following is C++ implementation of this.

C/C++

#include <iostream>
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


Output:
7

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

This article is contributed by Rahul Jain. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:







Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.