• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Swapping through shift operators ?

 
Iftikhar Arain
Ranch Hand
Posts: 95
Flex Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Clojure Spring VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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: 42968
73
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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;
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic