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.
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.
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.