Operaciones binarias con números enteros
Vamos a ver los cuatro casos que se pueden dar.
- Dos números positivos
- Un número positivo y otro negativo (éste menor en valor absoluto).
- Un número positivo y otro negativo (éste mayor en valor absoluto).
- Ambos números negativos.
Suma de dos números positivos
Esto se hará tal y como se indica en este apartado, como ya sabemos.
Suma de un número positivo y otro negativo (éste menor en valor absoluto)
Veamos este ejemplo:
\frac{\begin{matrix} & 2 & 1\\ - & 1 & 4 \end{matrix}}{\begin{matrix} & & \end{matrix}}
Cuando tengamos un caso así, convertiremos la diferencia en una suma, haciendo el complemento a dos del número de menor valor absoluto. Vamos a darle caña:
C_2 (14) = C_2 (01110) = 10010
Observa que hemos escrito la expresión binaria de 14 con el mismo número de bits que 21 (que tiene justo un bit más). Esto es fundamental. Anota en tu memoria que estamos trabajando, por tanto, con números de cinco bits.
Ahora vamos con la suma:
\frac{\begin{matrix} & 1 & 0 & 1 & 0 & 1\\ + & 1 & 0 & 0 & 1 & 0 \end{matrix}}{\begin{matrix} 1 & 0 & 0 & 1 & 1 & 1 \end{matrix}}
Como la representación emplea 5 bits, el sexto (MSB) sobra. Lo eliminamos, y el resultado es, como esperamos, 00111B) = 111B) = 7D).
Suma de un número positivo y otro negativo (éste mayor en valor absoluto)
Bueno, vamos a hacer ahora esta operación:
\frac{\begin{matrix} - & 2 & 1\\ + & 1 & 4 \end{matrix}}{\begin{matrix} & & \end{matrix}}
Obtenemos el complemento a 2 del número negativo: C2(21) = C2(10101) = 01011, y ahora hacemos la suma:
\frac{\begin{matrix} & 0 & 1 & 0 & 1 & 1\\ + & 0 & 1 & 1 & 1 & 0 \end{matrix}}{\begin{matrix} & & 1 & 1 & 0 & 0 & 1 \end{matrix}}
Mantenemos la representación en 5 bits. Como el MSB es un 1, significa que el número del resultado es negativo. Para saber qué número es, obtenemos de nuevo el complemento a 2:
C2(11001) = 00111 = 7D)
que es lo que debíamos obtener. Por tanto, el resultado de la diferencia es -7.
Suma de dos números negativos
Vamos a hacer una suma de los dos números que hemos venido trabajando, pero con signo negativo:
\frac{\begin{matrix} - & 2 & 1\\ - & 1 & 4 \end{matrix}}{}
En este caso, lo que hacemos es añadir un bit a "1" a la izquierda del MSB. Este bit es el bit de signo, y nos indicará que cada número es negativo:
\begin{matrix} -21_D = 1 & 1 & 0 & 1 & 0 & 1 \\ -14_D = 1 & 0 & 1 & 1 & 1 & 0 \end{matrix}
Sumamos ahora los dos números binarios, teniendo en cuenta que el MSB nos indicará el signo (negativo):
\frac{\begin{matrix} & 1 & 1 & 0 & 1 & 0 & 1 \\ + & 1 & 0 & 1 & 1 & 1 & 0 \end{matrix}}{\begin{matrix} 1 & 1 & 0 & 0 & 0 & 1 & 1 \end{matrix}}
Teniendo en cuenta esto, el número es 100011 con un signo negativo (el "1" en el MSB), es decir, -35D), como cabía esperar.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0