Comments (4)

fujiy

7/1/2009 4:10:02 PM

int i1 = 5;
int i2 = 10;

i1 = i1 ^ i2;
i2 = i1 ^ i2;
i1 = i1 ^ i2;

Console.WriteLine("i1 = " + i1);
Console.WriteLine("i2 = " + i2);

Reply

fujiy

7/2/2009 9:22:50 AM

int i1 = 5;
int i2 = 10;

i1 = i1 + i2;
i2 = i1 - i2;
i1 = i1 - i2;

Console.WriteLine("i1 = " + i1);
Console.WriteLine("i2 = " + i2);

Reply

Franklin

8/26/2009 3:09:47 AM

Fala Fujiy blz? Cara tô curtindo pra caramba seu blog, vem cá, como é o funcionamento do operador ^ nessa primeira solução?

Reply

fujiy

8/26/2009 11:07:53 PM

^ é o operador XOR(Exclusive OR), no caso:

i1 = 101 ^ 1010 //1111 é o XOR dos dois valores
i2 = 1111 ^ 1010 //Pegamos o valor acima e fazer um XOR pelo valor de i2, assim temos o valor de i1 de volta(101)
i1 = 1111 ^ 101//Aquele mesmo 1111 com XOR pelo antigo valor de i1(agora no i2), resulta no antigo valor de i2

Reply