# How can I swap two integers without temporary variables using JavaScript code?

Asked by

Ranimi23 (

1867
)
October 16th, 2012

Observing members:
0
Composing members:
0
## 7 Answers

This is a trick using the exclusive or operator ^ that was used when computers were short on memory.

a = (a ^ b) /* a^b, b */

b = (a ^ b) /* a^b, a */

a = (a ^ b) /* b, a */

You can also do it using subtraction for numeric values

a = a – b /* a – b, b */

b = b -a /* a-b, a */

a = b – a /* b, a */

The second step for the subtraction should be b = a + b

So it should be in JS:

a = a ^ b;

b = a ^ b;

a = a ^ b;

How about:

A = A + B

B = A – B

A = A – B

You can’t forget that values of A and B are changing as you encounter these equations. So these equations would totally fail as “simultaneous equations”, but they work in series as the computer operates them.

A = A * B

B = A / B

A = A / B

So, for example, if you start out that A = 2; B = 7:

A = A * B = 2 * 7 = 14

B = A / B = 14 / 7 = 2

A = A / B = 14 / 2 = 7

side note:

although it is doable without a temporary variable, I find

var temp = a;

a = b;

b = temp;

much more obvious and I prefer obvious over clever most of the time when reading other people’s code.

The advantage of using exclusive or for a computer is that there is no chance of overflow or, as in the case of division, loss of accuracy due to rounding.

## Answer this question

This question is in the General Section. Responses must be helpful and on-topic.