# Swapping through shift operators ?

posted 11 years ago

Swap using shift operators? No clue. The XOR swap is well-known, though...

http://en.wikipedia.org/wiki/Xor_swap_algorithm

Example:

[ September 16, 2005: Message edited by: Steve Morrow ]

http://en.wikipedia.org/wiki/Xor_swap_algorithm

Example:

[ September 16, 2005: Message edited by: Steve Morrow ]

Ulf Dittmer

Rancher

Posts: 42970

73

posted 11 years ago

If you know that i and j are int (i.e., can be represented in 32 bits), something like the following would do the trick.

long i = 5;

int j = 7;

i = (i << 32) + j;

j = i >> 32;

i = i & 1111111111111111;

I haven't tested it, and it doesn't work with negative numbers, but you get the idea.

Of course, you can just use simple arithmetic:

i = i + j;

j = i - j;

i = i - j;

long i = 5;

int j = 7;

i = (i << 32) + j;

j = i >> 32;

i = i & 1111111111111111;

I haven't tested it, and it doesn't work with negative numbers, but you get the idea.

Of course, you can just use simple arithmetic:

i = i + j;

j = i - j;

i = i - j;