Program to clear K-th bit of a number N
Last Updated :
08 Nov, 2021
Given a number N, the task is to clear the K-th bit of this number N. If K-th bit is 1, then clear it to 0 and if it is 0 then leave it unchanged.
Examples:
Input: N = 5, K = 1
Output: 4
5 is represented as 101 in binary
and has its first bit 1, so clearing
it will result in 100 i.e. 4.
Input: N = 5, K = 2
Output: 5
5 is represented as 101 in binary
and has its second bit is already 0,
so clearing it will result in 101 i.e. 5.
Approach:
- Since bitwise AND of any bit with a reset bit results in a reset bit, i.e.
Any bit <bitwise AND> Reset bit = Reset bit
which means,
0 & 0 = 0
1 & 0 = 0
- So for clearing a bit, performing a bitwise AND of the number with a reset bit is the best idea.
n = n & ~(1 << k)
OR
n &= ~(1 << k)
where k is the bit that is to be cleared
Below is the implementation of the above approach:
C
#include <stdio.h>
int clearBit( int n, int k)
{
return (n & (~(1 << (k - 1))));
}
int main()
{
int n = 5, k = 1;
printf ( "%d\n" , clearBit(n, k));
return 0;
}
|
C++
#include <bits/stdc++.h>
using namespace std;
int clearBit( int n, int k)
{
return (n & (~(1 << (k - 1))));
}
int main()
{
int n = 5, k = 1;
cout<<clearBit(n, k)<<endl;
return 0;
}
|
Python3
def clearBit(n, k):
return (n & ( ~( 1 << (k - 1 ))))
n = 5
k = 1
print (clearBit(n, k))
|
Java
class GFG
{
static int clearBit( int n, int k)
{
return (n & (~( 1 << (k - 1 ))));
}
public static void main (String[] args)
{
int n = 5 , k = 1 ;
System.out.println(clearBit(n, k));
}
}
|
C#
using System;
class GFG
{
static int clearBit( int n, int k)
{
return (n & (~(1 << (k - 1))));
}
public static void Main (String[] args)
{
int n = 5, k = 1;
Console.WriteLine(clearBit(n, k));
}
}
|
Javascript
<script>
function clearBit(n, k)
{
return (n & (~(1 << (k - 1))));
}
var n = 5, k = 1;
document.write( clearBit(n, k));
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...