como-comparar-numeros-en-binario

Cómo comparar dos números binarios

La comparación de números binarios es una de las operaciones que con más frecuencia se realiza en el interior de un ordenador..

Es necesario comparar números para realizar muchas de las operaciones aritméticas, pero también para la evaluación de condicionales, la ejecución de bucles, y… en muchos casos.

Así que, de igual forma que es necesario para un ordenador, también debemos aprender a hacerlo “a mano”. Afortunadamente, comparar dos números binarios es facilisimo, más incluso que en decimal.

Comparación variables unsigned

Si nuestros número binario representa un valor unsigned, la comparación es muy muy fácil.

  • Empezamos por el bit de la izquierda
  • Vamos comparando bit con bit
    • Si son iguales, pasamos al siguiente bit
    • Si son diferentes, el que tenga 1 es el mayor.

Ejemplo de comparación de variables unsigned

Consideremos los números binarios 1101 y 1011 para comparar:

  • 1101 (13 en decimal)
  • 1011 (11 en decimal)

Comencemos comparando los bits más significativos:

  • Para 1101, el bit más significativo es 1.
  • Para 1011, el bit más significativo también es 1.

Ambos números tienen el mismo bit más significativo, así que pasamos al siguiente:

  • El segundo bit para 1101 es 1.
  • El segundo bit para 1011 es 0.

Por lo tanto, 1101 es mayor que 1011.

Comparación de variables signed

Cuando trabajamos con variables signed, la cosa de complica un poco. En las variables signed, el bit de la izquierda, indica el signo del número. Si este bit es 1, el número es negativo; si es 0, el número es positivo.

Así que para comparar debemos hacer lo siguiente:

  • Miramos el bit del signo
    • Si es diferente, el que sea positivo (tiene un 0) es el mayor
    • Si ambos son positivos, comparar como si fueran unsigned
    • Si ambos son negativos, invertir los números, y comparar como si fueran unsigned.

Como vemos, hay que tener en cuenta un par de cosas más. Pero no es difícil si sabemos qué es lo que estamos haciendo. Simplemente tenemos que saber que ahora pueden ser números positivos o negativos.

Si unos es positivo y el otro es negativo, gana el positivo. Si ambos son positivos, es comparar como hemos hecho antes. Ambos casos son fáciles.

La única “mini dificultad” (pero muy mini) es si ambos son negativos. En el complemento a 2, los números negativos están invertidos. Así que para compararlos tenemos que,

  • O los invertimos, y los comparamos
  • O simplemente comparamos de izquierda a derecha (como en el caso de los positivos), pero ahora el que tenga un 0 es mayor

Personalmente yo haría la segunda opción. Pero usad la que os parezca más cómoda a vosotros.