# C Program to Swap Two Bits for a 32-Bit Integer

«
»

This is a C Program to swap the ith and jth bits for a 32-bit integer.

Problem Description

This C Program swaps the ith and jth bits for a 32-bit integer.

Problem Solution

Take input from the user and swaps the ith and jth bits as shown in the program below.

Program/Source Code

Here is source code of the C Program to swap the ith and jth bits for a 32-bit integer. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

```/*
* C Program to Swap the ith and jth Bits for a 32-Bit Integer
*/
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
int n = 0, num = 0, p = 0, q = 0;

printf ("Enter the number: ");
scanf ("%d", &n);

printf ("\nEnter position 1: ");
scanf ("%d", &p);

printf ("\nEnter position 2: ");
scanf ("%d", &q);

num = n;

// see if the bits are same. we use XOR operator to do so.
if (((n & (1 << p)) >> p) ^ ((n & (1 << q)) >> q))
{
n ^= (1 << p);
n ^= (1 << q);
}

printf ("\nThe result after swapping the respective bits are: %d\n", n);

return 0;
}```
Program Explanation

1. In this C Program, we are reading the number using ‘n’ variable and also the bit positions using ‘p’ and ‘q’ variables respectively.
2. First shift the bit in given position to right-end. This can be achieved by the code below.
for p’th bit – n & (1 << p)) >> p)
for q’th bit – (n & (1 << q)) >> q)
3. Next step is to perform XOR operation. If the bits are the same, no need to swap.
4. If the bits are not the same, just toggle the bits. This can be achieved by the code below.
toggle bit at position p: n ^= (1 << p); toggle bit at position q: n ^= (1 << q);

Runtime Test Cases

Test case 1 – Here, the entered number is 1. Postion 1 is 0 & Postion 2 is 1.

```./a.out
Enter the number: 2

Enter position 1: 0

Enter position 2: 1

The result after swapping the respective bits are: 1```

Test case 2 – Here, the entered number is 8. Postion 1 is 0 & Postion 2 is 3.

```./a.out
Enter the number: 8

Enter position 1: 0

Enter position 2: 3

The result after swapping the respective bits are: 1```

Test case 3 – Here, the entered number is 11. Postion 1 is 0 & Postion 2 is 4.

```./a.out
Enter the number: 11

Enter position 1: 0

Enter position 2: 4

The result after swapping the respective bits are: 26```

Sanfoundry Global Education & Learning Series – 1000 C Programs.

Here’s the list of Best Books in C Programming, Data-Structures and Algorithms

If you wish to look at programming examples on all topics, go to C Programming Examples.