### Swap without third variable (3 methods)

Posted:

**Fri Nov 28, 2014 10:43 am**Hi, I've founded this three methods with my friend (foundef by ourself, not on internet but I think that they already exist).

The first and second metods are for numeric variables: it consists to merge the variable and next extracts it:

First:

A = 5;

B = 3;

A = A+B; //5+3=8

B = A-B; //8-3 = 5

A = A-B; //8-5 = 3

Second:

A = 6;

B = 9;

A = A-B; //6-9=-3

B = A+B; //-3+9=6

A = B-A; //6-(-3) =9

The third method is my favourite: it consist to merge it with the exclusive sum/exclusive or (XOR bit to bit)

/*

This is the XOR table: it is true when only one is true (or when the two bits are different)

x | y | x^y (In C/C++, ^ is XOR bit to bit)

0 | 0 | 0

0 | 1 | 1

1 | 0 | 1

1 | 1 | 0

*/

A=255; //11111111

B=134; //10000110

A=A^B; //01111001

/*

11111111 ^

10000110 =

01111001

*/

B = A^B; //11111111 (255)

/*

01111001 ^

10000110 =

11111111

*/

A = A^B; //10000110 (134)

/*

01111001 ^

11111111 =

10000110

*/

It's all

The first and second metods are for numeric variables: it consists to merge the variable and next extracts it:

First:

A = 5;

B = 3;

A = A+B; //5+3=8

B = A-B; //8-3 = 5

A = A-B; //8-5 = 3

Second:

A = 6;

B = 9;

A = A-B; //6-9=-3

B = A+B; //-3+9=6

A = B-A; //6-(-3) =9

The third method is my favourite: it consist to merge it with the exclusive sum/exclusive or (XOR bit to bit)

/*

This is the XOR table: it is true when only one is true (or when the two bits are different)

x | y | x^y (In C/C++, ^ is XOR bit to bit)

0 | 0 | 0

0 | 1 | 1

1 | 0 | 1

1 | 1 | 0

*/

A=255; //11111111

B=134; //10000110

A=A^B; //01111001

/*

11111111 ^

10000110 =

01111001

*/

B = A^B; //11111111 (255)

/*

01111001 ^

10000110 =

11111111

*/

A = A^B; //10000110 (134)

/*

01111001 ^

11111111 =

10000110

*/

It's all