Cualquier alumno de programación
básica podría reconocer el siguiente código:
aux = x;
x = y;
y = aux;
Se trata del clásico intercambio
de variables.
Sin embargo existen otras formas de
intercambiar el valor de dos variables; formas que no requieren
utilizar otra auxiliar.
Aquí expondré dos que
conozco, la primera utilizando aritmética básica y la
segunda utilizando álgebra de Bool.
Utilizando aritmética básica.
El código es el siguiente:
x = x + y;
y = x - y;
x = x - y;
Este código es muy interesante,
sin embargo es posible que, si la suma de “x” y “y” diera un
valor muy alto, provoquemos un desbordamiento (overflow) en la
variable “x” y todo salga mal.
Utilizando álgebra de Bool.
Tal vez los programadores de lenguaje
de ensamblador (assembly) estén familiarizados con esta forma.
Se trata de utilizar la operación binaria “XOR” (o
excluyente).
a ^= b;
b ^= a;
a ^= b;
Alternativamente se puede hacer en una
línea:
a ^= b ^= a ^= b;
Este código es la gloria. Aunque
según tengo entendido no es portable, ¡así que no
lo usen!
0 comentarios:
Publicar un comentario en la entrada