Comments (4)

fujiy

07/01/2009 12:10:02

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

07/02/2009 05:22:50

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

08/25/2009 23:09:47

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

Reply

fujiy

08/26/2009 19:07:53

^ é 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