Problem# Given an integer x and a zero-based index n, toggle the n-th bit of x and return the result. Toggling flips the bit (0 -> 1 and 1 -> 0) without affecting other bits.
Examples# Example 1# 1
2
3
Input: x = 0b01110101 , n = 5
Output: 0b01010101
Explanation: the bit at position 5 ( counting from 0 at LSB) is flipped from 1 to 0.
Example 2# 1
2
3
Input: x = 0b01010101 , n = 5
Output: 0b01110101
Explanation: bit at position 5 flipped from 0 to 1.
Similar Problems Solution# Method 1 — XOR with a single-bit mask (recommended)# Intuition# XORing a bit with 1 flips it and XORing with 0 leaves it unchanged. Construct a mask with a 1 only at n and XOR it with x to toggle the desired bit in one operation.
Approach# Build mask = 1 << n. Return x ^ mask. Validate n when necessary (ensure n >= 0 and within machine word size) to avoid undefined shifts in some languages. Code#
Cpp
Go
Java
Python
1
2
3
4
5
6
7
class Solution {
public :
unsigned int toggleNthBit(unsigned int x, unsigned int n) {
unsigned int mask = 1u << n;
return x ^ mask;
}
};
1
2
3
4
5
6
package main
func toggleNthBit (x uint32 , n uint ) uint32 {
mask := uint32(1 ) << n
return x ^ mask
}
1
2
3
4
5
6
class Solution {
public int toggleNthBit (int x, int n) {
int mask = 1 << n;
return x ^ mask;
}
}
1
2
3
4
class Solution :
def toggle_nth_bit (self, x: int, n: int) -> int:
mask = 1 << n
return x ^ mask
Complexity# ⏰ Time complexity: O(1), one shift and one XOR. 🧺 Space complexity: O(1). Method 2 — Explicit set/clear (alternate)# Intuition# Read the n-th bit and either clear it (if 1) or set it (if 0). This is explicit but uses the same primitive masks.
Approach# Compute b = (x >> n) & 1. If b == 1 clear: x & ~(1 << n). Else set: x | (1 << n). Code#
Cpp
Go
Java
Python
1
2
3
4
5
6
7
8
class Solution {
public :
unsigned int toggleNthBitExplicit(unsigned int x, unsigned int n) {
unsigned int b = (x >> n) & 1u ;
if (b == 1u ) return x & ~ (1u << n);
return x | (1u << n);
}
};
1
2
3
4
5
6
7
8
9
package main
func toggleNthBitExplicit (x uint32 , n uint ) uint32 {
b := (x >> n ) & 1
if b == 1 {
return x & ^(uint32(1 ) << n )
}
return x | (uint32(1 ) << n )
}
1
2
3
4
5
6
7
class Solution {
public int toggleNthBitExplicit (int x, int n) {
int b = (x >> n) & 1;
if (b == 1) return x & ~ (1 << n);
return x | (1 << n);
}
}
1
2
3
4
5
6
class Solution :
def toggle_nth_bit_explicit (self, x: int, n: int) -> int:
b = (x >> n) & 1
if b == 1 :
return x & ~ (1 << n)
return x | (1 << n)
Complexity# ⏰ Time complexity: O(1). 🧺 Space complexity: O(1). Notes# Toggling the n-th bit via XOR is a standard bit hack; XORing twice with the same mask restores the original value — a property used in parity calculations and simple obfuscation. This is a primitive operation rather than a standalone LeetCode problem.