Intercambio de 2 variables sin variable auxiliar

Seguramente, a lo largo de tu vida de programador, se te ha presentado el caso de que tengas que intercambiar el valor de 2 variables. La forma más utilizada es la de usar una variable auxiliar, pero en este post te presento una manera diferente de hacerlo.

Como apuntaba anteriormente, ésta es la manera típica de realizar esta operación:

En la siguiente tabla se puede observar de una manera más clara, utilizando un ejemplo, en el que tenemos el valor 0x45 en la variable a, el valor 0x23 en la variable b y queremos intercambiar estos valores:

Pero olvidemos la variable auxiliar y utilicemos una de las funciones lógicas que la gente no tiene demasiado en cuenta, pero que muchas veces nos puede sacar de un aprieto. Me refiero a la XOR (también conocida como OR Exclusiva). Para los que no recuerden su funcionamiento, adjunto una pequeña tabla aclaratoria:

Al igual que en el caso anterior, que mejor manera de comprender la operación de cambio que mediante un sencillo ejemplo. Usaremos los mismos valores de las 2 variables del caso anterior (0x45 para la variable a y 0x23 para la variable b) pero para una mejor comprensión, utilizaremos la notación binaria (01000101b para la variable a y 00100011 para la variable b)

Como podemos observar, 3 sencillos pasos bastan para un fácil intercambio del valor de 2 variables sin pasar por una variable auxiliar.

2 comments to Intercambio de 2 variables sin variable auxiliar

  • Bitacoras.com  says:

    Información Bitacoras.com…

    Valora en Bitacoras.com: Seguramente, a lo largo de tu vida de programador, se te ha presentado el caso de que tengas que intercambiar el valor de 2 variables. La forma más utilizada es la de usar una variable auxiliar, pero en este post te presento …..

  • madelman  says:

    Muy bueno. Realmente siguen siendo necesarias 3 asignaciones pero sin la necesidad de reservar memoria para una variable auxiliar :)

Leave a reply

Connect with Facebook

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>