Write a C program to input any number from user and toggle or invert or flip n^{th} bit of the given number using bitwise operator. How to toggle n^{th} bit of a given number using bitwise operator in C programming. C program set n^{th} bit of a given number if it is unset otherwise unset if it is set.

**Example**

**Input**

Input number: 22 Input nth bit to toggle: 1

**Output**

After toggling nth bit: 20 (in decimal)

## Required knowledge

Bitwise operators, Data types, Variables and Expressions, Basic input/output

## Logic to toggle nth bit of a number

Toggling bit means setting a bit in its complement state. Means if bit is currently set then change it to unset and vice versa.

To toggle a bit we will use bitwise XOR `^`

operator. Bitwise XOR operator evaluates to `1` if corresponding bit of both operands are different otherwise evaluates to `0`. We will use this ability of bitwise XOR operator to toggle a bit. For example – if Least Significant Bit of `num` is 1, then `num ^ 1`

will make LSB of `num` to 0. And if LSB of `num` is 0, then `num ^ 1`

will toggle LSB to 1.

Step by step descriptive logic to toggle nth bit of a number.

- Input number and nth bit position to toggle from user. Store it in some variable say
`num`and`n`. - Left shift 1 to
`n`times, i.e.`1 << n`

. - Perform bitwise XOR with
`num`and result evaluated above i.e.`num ^ (1 << n);`

.

## Program to toggle or invert nth bit

```
/**
* C program to toggle nth bit of a number
*/
#include <stdio.h>
int main()
{
int num, n, newNum;
/* Input number from user */
printf("Enter any number: ");
scanf("%d", &num);
/* Input bit position you want to toggle */
printf("Enter nth bit to toggle (0-31): ");
scanf("%d", &n);
/*
* Left shifts 1, n times
* then perform bitwise XOR with num
*/
newNum = num ^ (1 << n);
printf("Bit toggled successfully.\n\n");
printf("Number before toggling %d bit: %d (in decimal)\n", n, num);
printf("Number after toggling %d bit: %d (in decimal)\n", n, newNum);
return 0;
}
```

Output

Enter any number: 22 Enter nth bit to toggle (0-31): 1 Bit toggled successfully. Number before toggling 1 bit: 22 (in decimal) Number after toggling 1 bit: 20 (in decimal)

Happy coding ðŸ˜‰