# C program to swap two Integers using Bitwise Operators

In this article, we are going to see how to swap two no using bitwise operator without using any temporary operators?
Submitted by Radib Kar, on January 06, 2019

Problem statement: Write a C program to swap two integers using bitwise operators without using any temporary variable.

Algorithm:

1. Let n1 and n2 be two numbers to be swapped.
2. Update n1 to n1^n2, i.e., n1=n1^n2
3. Update n2 to n1^n2, i.e., n2=n1^n2 //n1 is already updated in previous step, use the updated value.
4. Again update n1 to n1^n2, i.e., n1=n1^n2 //n2 already updated in previous step.

This results in swapping as n1 contains new value of n2 and vice versa.

Reason:

```    n1=n1^n2; //statement1
n2=n1^n2; //statement2
n1=n1^n2; //statement3

At statement 2 replace n1 by stamen 1,
n2  = (n1^n2) ^ n2
= n1^ (n2^n2) //XOR follows associative property
= n1^0 // (n2^n2=0)
= n1

At statement 3 replace n1, n2 by statement 1, 2
n1  = (n1^n2) ^ n1 //n2=n1 just found previously
= (n2^n1) ^n1 //XOR follows commutative property
= n2^ (n1^n1)
= n2^ 0
= n2

Thus n1 & n2 is swapped
```

Example with explanation

```Let two numbers be
n1= 5 //0000 0101
n2= 8 //0000 1000

Let's perform the aforementioned steps:
1.  n1=n1^n2
n1= 0000 0101 ^ 0000 1000 = 0000 1101
2.  n2=n1^n2
n2= 0000 1101 ^ 0000 1000= 0000 0101 //5=n1(original value of n1) actually
3.  n1= n1^ n2
n1= 0000 1101 ^ 0000 0101 = 0000 1000 //8 =n2 (original value of n2) actually
```

### C implementation to swap two Integers using Bitwise Operators

```#include <stdio.h>

int main()
{
int n1,n2;
printf("enter two numbers\n");
scanf("%d %d",&n1,&n2);
printf("before swapping...\n");
printf("first no is %d, second no %d\n",n1,n2);

//swapping using bitwise operators

n1=n1^n2;
n2=n1^n2;
n1=n1^n2;

//n1 & n2 is swapped
printf("after swapping...\n");
printf("first no is %d, second no %d\n",n1,n2);

return 0;
}
```

Output

```enter two numbers
5 7
before swapping...
first no is 5, second no 7
after swapping...
first no is 7, second no 5
```

Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates