Toggle all the bits of a number except k-th bit.
Given a positive (or unsigned) integer n, write a function to toggle all the bits except k-th bit. Here value of k starts from 0 (zero) and from right.
Examples:
Input : n = 4294967295, k = 0 Output : 1 The number 4294967295 in 32 bits has all bits set. When we toggle all bits except last bit, we get 1. Input : n = 1, k = 1 Output : 4294967292 4294967262 has all bits toggled except second bit from right.
- Toggle bit at k-th position. We do it by finding a number with only k-th bit set (using 1 << k), then doing bitwise XOR of this number n.
- Toggle all bits of number obtained above using ~ (Bitwise negation)
C++
// C++ program to toggle all bits except kth bit #include <iostream> using namespace std; // Returns a number with all bit toggled in n // except k-th bit unsigned int toggleAllExceptK(unsigned int n, unsigned int k) { /* 1) Toggle k-th bit by doing n ^ (1 << k) 2) Toggle all bits of the modified number */ return ~(n ^ (1 << k)); } // Driver code int main() { unsigned int n = 4294967295; unsigned int k = 0; cout << toggleAllExceptK(n, k); return 0; } // This code is contributed by khushboogoyal499 |
C
// C program to toggle all bits except kth bit #include<stdio.h> // Returns a number with all bit toggled in n // except k-th bit unsigned int toggleAllExceptK(unsigned int n, unsigned int k) { /* 1) Toggle k-th bit by doing n ^ (1 << k) 2) Toggle all bits of the modified number */ return ~(n ^ (1 << k)); } // Driver code int main() { unsigned int n = 4294967295; unsigned int k = 0; printf ( "%u" , toggleAllExceptK( n, k)); return 0; } |
Python3
# Python3 program to toggle all bits # except kth bit # Returns a number with all bit toggled # in n except k-th bit def toggleAllExceptK(n, k): # 1) Toggle k-th bit by doing n ^ (1 << k) # 2) Toggle all bits of the modified number temp = bin (n ^ ( 1 << k))[ 2 :] ans = "" for i in temp: if i = = '1' : ans + = '0' else : ans + = '1' return int (ans, 2 ) # Driver code if __name__ = = '__main__' : n = 4294967295 k = 0 print (toggleAllExceptK(n, k)) # This code is contributed by mohit kumar 29 |
Javascript
<script> // javascript program to toggle all bits except kth bit // Returns a number with all bit toggled in n // except k-th bit function toggleAllExceptK(n,k) { /* 1) Toggle k-th bit by doing n ^ (1 << k) 2) Toggle all bits of the modified number */ return ~(n ^ (1 << k)); } // Driver code let n = 4294967295; let k = 0; document.write(toggleAllExceptK(n, k)); //This code is contributed by unknown2108 </script> |
Output:
1
Time Complexity : O(1)
Space Complexity : O(1)