La suma, la resta, la multiplicación y la división también funcionan en el sistema binario. Su lógica es la misma que en decimal: se alinean las posiciones del mismo peso, se trabaja de derecha a izquierda cuando es necesario y se gestionan acarreos, préstamos y resultados parciales. La diferencia es que la base 2 solo utiliza 0 y 1.
El NIST define el bit como un dígito binario con valor 0 o 1. En una secuencia ordenada, el bit más significativo está a la izquierda y el menos significativo a la derecha. Cada columna pesa el doble que la columna situada inmediatamente a su derecha.
Primera regla: alinear los pesos
La columna 2⁰ debe estar debajo de 2⁰, 2¹ debajo de 2¹, etc. Es el equivalente a alinear unidades, decenas y centenas en decimal.
Los ceros iniciales no cambian un entero sin signo. 1101 y 01101 representan 13. Son útiles para mostrar la alineación o una anchura fija.
Las cuatro operaciones siguen la lógica decimal, pero cada columna usa solo 0 y 1 y corresponde a una potencia de dos.
Suma binaria: casos fundamentales
- 0 + 0 = 0;
- 0 + 1 = 1;
- 1 + 0 = 1;
- 1 + 1 = 10₂: escribir 0 y llevar 1;
- 1 + 1 + 1 = 11₂: escribir 1 y llevar 1.
El valor de 1 + 1 es dos, pero la base 2 no tiene una cifra única 2. Por eso escribe una unidad en la columna siguiente y cero en la actual.
Ejemplo completo: 1011 + 1101
1011 + 1101 ------- 11000- 1 + 1 = 10: escribo 0 y llevo 1;
- 1 + 0 + acarreo = 10;
- 0 + 1 + acarreo = 10;
- 1 + 1 + acarreo = 11: escribo 1 y coloco el acarreo final a la izquierda.
El resultado es 11000₂. En decimal: 11 + 13 = 24.
Cuando una columna suma 2 o 3 en decimal, la escritura binaria genera una cifra actual y un acarreo hacia la izquierda.
¿Dónde va el acarreo?
Siempre a la siguiente columna de la izquierda, porque esa columna tiene el doble de peso. Dos unidades de 2⁰ se escriben como 0 × 2⁰ + 1 × 2¹.
Si queda un acarreo después de la última columna y la anchura es variable, se convierte en una nueva cifra inicial.
Cada acarreo se coloca sobre la columna siguiente a la izquierda; el último se convierte en una nueva cifra.
Resta binaria: el préstamo vale 10₂
- 0 - 0 = 0;
- 1 - 0 = 1;
- 1 - 1 = 0;
- 0 - 1 necesita un préstamo de la izquierda.
En base 10, una unidad prestada desde la siguiente columna vale diez unidades actuales. En base 2 vale dos, es decir, 10₂. Por tanto, 10₂ - 1₂ = 1₂.
Ejemplo: 1101 - 0110
1101 - 0110 ------- 0111El resultado 111₂ vale 7. Comprobación: 13 - 6 = 7.
Si el bit inmediatamente a la izquierda es 0, el préstamo se propaga hasta encontrar un 1, igual que una resta decimal que atraviesa varios ceros.
Restar mediante el complemento a dos
Con anchura fija, el hardware puede reutilizar el sumador:
A - B = A + complemento_a_dos(B)
Se invierten los bits y se suma 1. En cuatro bits, el complemento a dos de 0110 es 1010:
1101 + 1010 ------- 1 0111Al descartar el acarreo exterior queda 0111, es decir, 7.
Multiplicación binaria: productos parciales y desplazamientos
- 0 × 0 = 0;
- 0 × 1 = 0;
- 1 × 0 = 0;
- 1 × 1 = 1.
Cada cifra del multiplicador crea un producto parcial. Un 0 produce ceros; un 1 copia el multiplicando. Cada posición hacia la izquierda desplaza el producto parcial.
Ejemplo: 101 × 11
101 × 11 ----- 101 + 1010 ----- 1111101₂ vale 5, 11₂ vale 3 y 1111₂ vale 15.
Un desplazamiento a la izquierda multiplica un entero sin signo por 2 si existe anchura suficiente. En una palabra fija, los bits que salen por la izquierda pueden perderse.
División binaria: comparar, restar y conservar el resto
Se compara el divisor con la parte actual del dividendo. Si cabe, se escribe 1 en el cociente y se resta; si no, se escribe 0. Después se baja la cifra siguiente.
Ejemplo simple: 1100 ÷ 10
1100₂ vale 12 y 10₂ vale 2. El cociente es 110₂, es decir, 6, con resto 0.
En un entero positivo sin signo, dividir entre 10₂ equivale a desplazar una posición a la derecha. El bit eliminado es el resto al dividir entre 2.
Ejemplo con resto: 10111 ÷ 11
10111₂ ÷ 11₂ = 111₂ con resto 10₂.
En decimal: 23 = 3 × 7 + 2. El resto es menor que el divisor.
Desplazamientos y potencias de 2
- un desplazamiento a la izquierda multiplica por 2;
- dos desplazamientos multiplican por 4;
- un desplazamiento a la derecha divide enteramente un valor no negativo entre 2;
- k desplazamientos corresponden a 2ᵏ.
Con valores con signo hay que distinguir desplazamiento lógico y aritmético. El comportamiento concreto depende de la arquitectura y del lenguaje.
Anchura fija, acarreo y desbordamiento
En cuatro bits sin signo:
1111 + 0001 ------- 1 0000El resultado matemático 16 no cabe en el intervalo 0 a 15. Si se guardan cuatro bits, queda 0000 y el acarreo exterior indica que el valor no cabe.
El acarreo sin signo y el desbordamiento con signo no son iguales. En complemento a dos de cuatro bits:
0111 (+7) + 0001 (+1) ------- 10001000 representa -8, aunque el resultado matemático sería +8. Hay desbordamiento con signo incluso sin acarreo final.
¿Qué hace la CPU?
La CPU utiliza circuitos lógicos. Los sumadores completos procesan bits y acarreos; los registros conservan operandos y resultados; los circuitos de control eligen la operación.
La referencia oficial de Intel describe instrucciones como ADD, ADC para suma con acarreo, SUB, SBB para resta con préstamo, además de multiplicación y división. Los indicadores carry y overflow permiten cálculos de varias palabras y detectan resultados fuera de rango.
Comprobar con Python
a = 0b1011 b = 0b1101 print(bin(a + b)) # 0b11000 print(bin(a - 0b0110)) # 0b101 print(bin(0b101 * 0b11)) # 0b1111 q, r = divmod(0b10111, 0b11) print(bin(q), bin(r)) # 0b111 0b10Los enteros de Python tienen precisión arbitraria y no reproducen automáticamente el desbordamiento de un registro fijo. Una máscara como & 0b1111 conserva cuatro bits.
Errores frecuentes
- No alinear a la derecha: se combinan pesos distintos.
- Dejar el acarreo en la misma columna: debe pasar a la izquierda.
- No reducir la columna que presta: el préstamo la modifica.
- No desplazar los productos parciales: las posiciones tienen pesos diferentes.
- Confundir cociente y resto: el resto debe ser menor que el divisor.
- Ignorar la anchura: un resultado correcto puede no caber.
- Confundir carry y overflow: describen condiciones distintas.
Preguntas frecuentes
¿Por qué 1 + 1 no produce la cifra 2?
El valor es dos, pero la base 2 lo escribe como 10.
¿Cuándo el acarreo final se convierte en otra cifra?
Cuando la anchura es variable. En un registro fijo puede guardarse en un indicador carry.
¿Multiplicar por 10₂ significa multiplicar por diez?
No. 10₂ vale 2 en decimal.
¿Una división binaria puede tener resto?
Sí, cuando el dividendo no es múltiplo exacto del divisor.
¿Por qué se utiliza el complemento a dos?
Porque transforma la resta en suma y permite reutilizar el mismo circuito.