To turn off the particular bit in given number we 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.
For Examples:
Input: n = 15, k = 1
Output: 14
Explanation :- Binary Representation of 15 is 1111, if we turn off first bit then binary would be 1110 which is 14.
Input: n = 15, k = 2
Output: 13
Explanation :- Binary Representation of 15 is 1111, if we turn off first bit then binary would be 1101 which is 14.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include<stdio.h> // Returns a number that has all bits same // except the bit which is made 0 int TurnOffParticularBit(int number, int bit) { // bit must be greater than 0 if (bit <= 0) return number; // Do & of number with a number with all set bits except // the bit return (number & ~(1 << (bit - 1))); } int main() { printf("%d",TurnOffParticularBit(15, 4) ); return 0; } |