programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Paradigms IDEs Build Tools Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Swapping through shift operators ?

Iftikhar Arain
Ranch Hand
Posts: 95
Can any one tell me how to swap two numbers without using third number with the help of shift operators.
Thanks

Steve Morrow
Ranch Hand
Posts: 657
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 ]

Ulf Dittmer
Rancher
Posts: 42972
73
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;