# C program to swap two bits of a 32-bit integer number

Here, we are going to learn how to swap two bits of a 32-bit integer number in C programming language?
Submitted by Nidhi, on July 31, 2021

Problem Solution:

Read an integer number and bit positions. Then swap bit positions of a given number using C program.

Program:

The source code to swap two bits of a 32-bit integer number is given below. The given program is compiled and executed using GCC compile on UBUNTU 18.04 OS successfully.

```// C program to swap two bits of a
// 32-bit integer number

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
int num = 0;
int pos1 = 0;
int pos2 = 0;

int i = 0;

printf("Enter Number: ");
scanf("%d", &num);

printf("Enter position1: ");
scanf("%d", &pos1);

printf("Enter position2: ");
scanf("%d", &pos2);

printf("Binary number before swapping bits: \n");
for (i = 31; i >= 0; i--) {
if (num & (1 << i))
printf("1");
else
printf("0");
}

if (((num & (1 << pos1)) >> pos1) ^ ((num & (1 << pos2)) >> pos2)) {
num ^= (1 << pos1);
num ^= (1 << pos2);
}

printf("\nResult is: %d\n", num);
printf("Binary number after swapping bits: \n");
for (i = 31; i >= 0; i--) {
if (num & (1 << i))
printf("1");
else
printf("0");
}

printf("\n");

return 0;
}
```

Output:

```RUN 1:
Enter Number: 191
Enter position1: 5
Enter position2: 6
Binary number before swapping bits:
00000000000000000000000010111111
Result is: 223
Binary number after swapping bits:
00000000000000000000000011011111

RUN2:
Enter Number: 8
Enter position1: 2
Enter position2: 3
Binary number before swapping bits:
00000000000000000000000000001000
Result is: 4
Binary number after swapping bits:
00000000000000000000000000000100

RUN 3:
Enter Number: 2730
Enter position1: 1
Enter position2: 2
Binary number before swapping bits:
00000000000000000000101010101010
Result is: 2732
Binary number after swapping bits:
00000000000000000000101010101100
```

Explanation:

Here, we read an integer number and bit positions from the user. Then we interchanged the bits from given positions. After that, we printed the result on the console screen.