La sustracción binaria es otra operación fundamental que se utiliza para restar un número binario de otro.
Al igual que en la resta decimal se restan los bits correspondientes de los números de derecha a izquierda, teniendo en cuenta los préstamos.
La resta binaria puede resultar en un resultado negativo si el número a restar es mayor que el número del cual se está restando.
Pruébalo
Préstamo (Borrow)
El “préstamo” (borrow) ocurre cuando no se puede restar un número de otro debido a su valor. Esto sucede cuando el número que se resta es mayor que el número del cual se está restando.
En binario, esto sólo pasa cuando intentamos restar a 0
un 1
.En este caso, el resultado es ‘1’, y se “toma prestado” un valor del siguiente bit más significativo.
Ejemplo
Por ejemplo, para restar el número binario 1101
(13 en decimal) a 1011
(11 en decimal):
1011
- 1101
______
1110
El resultado es 1110
, que es igual a -2 en decimal
Este es uno de los casos más complejos que os váis a encontrar, porque el resultado ha sido negativo
Es decir, el número que hemos restado (13) era más grande que el minuendo (11)
Resta binaria con complemento a dos
La resta binaria no es difícil, pero puede ser un poco peñazo. Generalmente es más rápido utilizando el método del complemento a dos. Este método permite convertir la resta en una suma, y sabemos sumar dos números binarios “a mano” muy rápido.
Para restar números binarios utilizando el complemento a dos, seguimos estos pasos:
- Convertir el número a restar en su complemento a dos
- Sumar el número del cual se está restando con el complemento a dos
- Descartar cualquier bit de desbordamiento al final
También podríamos hacer un procedimiento manual para restar a mano muy rápido, como hicimos con la suma. Pero en general más vale sabernos dos o tres “trucos” para hacer las cosas rápido, que intentar aprendernos 27 y luego mezclarlos u olvidarlos todos.
Ejemplo
Vamos a restar al número binario 1101
(13 en decimal), el número binario 1011
(11 en decimal) usando el complemento a dos:
1101
- 1011
_____
¿?¿?
Primero convertimos 1011
en su complemento a dos. Para ello, invertimos todos los bits y luego sumamos 1:
1011 (Número original) => Complemento a dos
0100 (Bits invertidos)
+ 1 (Suma de 1)
_____
0101 (Complemento a dos de 1011)
Sumamos
1101
con el complemento a dos de1011
:1101 (Número original) + 0101 (Complemento a dos de 1011) ______ 1 0010 (Resultado)
Al descartar el bit de desbordamiento a la izquierda, obtenemos el resultado final: 0010
, que es igual a 2 en decimal.
Las ventajas de usar el complemento a dos para las restas es que nos simplifica el proceso, y nos elimina elimina la necesidad de manejar los préstamos.
Bonus: Cómo restar 1 rápidamente en binario
Bonus especial, cómo restar rápidamente 1 a un número binario. Una operación muy sencilla, pero que como es muy habitual conviene saber hacerla.
Afortunadamente, restar 1 en binario “está tirado”. Simplemente
- Recorrer el número binario desde la derecha
- Buscas el primer
1
que encuentres, y lo cambias por0
- Desde esa posición, hacía la derecha, todo
1
s.
Por ejemplo, si tuviéramos que restar 1 1000100000
Buscamos el primer 1
Lo cambiamos por 0
y, de ahí para la derecha, todo 1
.
Así que el resultado es 1000011111
. Como veis sumar uno es rapidísimo.