C/Visual C - Intercambio de 2 variables

 
Vista:

Intercambio de 2 variables

Publicado por Ivano (1 intervención) el 29/01/2003 14:33:58
Mi problema es q quiero intercambiar 2 variables sin usar variables auxiliares, bien pues encontre la solución siguiente:
int a = 1;
int b = 2;
a^=b^=a^=b;

Mi pregunta es : alguien puede explicarme como funciona la última línea? No comprendo bien su funcionamiento exacto.

Gracias y un saludo a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Intercambio de 2 variables

Publicado por relfponk (11 intervenciones) el 29/01/2003 18:45:22
Jeje, nunca había visto eso antes :-P

Pues muy sencillo de entender, sólo tienes que darte cuenta que si haces un XOR entre dos elementos y al resultado le aplicas otra vez un XOR con uno de esos dos elementos el resultado es el otro elemento (esta propiedad se usa en las transmisiones inalámbricas para codificar-descodificar los datos, se conoce como modulación por espectro expandido con secuencia directa).

Pero la forma más facil de entender esto es con un ejemplo:

Date cuenta que tu línea es idéntica a esto:
a = a^b;
b = a^b;
a = a^b;

Pues ahora volvamos al colegio y vamos sustituyendo:

b = a^b == (a^b)^b == a^b^b = a (porque a^a == 0)
ya tenemos que b = a, sólo nos falta la mitad

a = a^b == (a^b)^b == {porque ahora a===b} == (a^b)^a == a^b^a = b (porque a^a == 0)

Fácil, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar