Write a C program to input any number from user and toggle or invert or flip nth bit of the given number using bitwise operator. How to toggle nth bit of a given number using bitwise operator in C programming. C program set nth 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 😉