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++ 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 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;
}
public class Main {
// Returns a number with all bit toggled in n
// except k-th bit
public static long toggleAllExceptK(long n, int k) {
// 1) Toggle k-th bit by doing n ^ (1 << k)
// 2) Toggle all bits of the modified number
long temp = n ^ (1L << k);
long mask = (1L << 32) - 1;
return ~temp & mask;
}
// Driver code
public static void main(String[] args) {
long n = 4294967295L;
int k = 0;
System.out.println(toggleAllExceptK(n, k));
}
}
# 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
<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>
// C# equivalent code
using System;
public class Program
{
// Returns a number with all bit toggled in n
// except k-th bit
public static long toggleAllExceptK(long n, int k)
{
// 1) Toggle k-th bit by doing n ^ (1 << k)
long temp = n ^ (1L << k);
// 2) Toggle all bits of the modified number
long mask = (1L << 32) - 1;
return ~temp & mask;
}
// Driver code
public static void Main(string[] args)
{
long n = 4294967295L;
int k = 0;
Console.WriteLine(toggleAllExceptK(n, k));
}
}
Output:
1
Time Complexity : O(1)
Space Complexity : O(1)