Cómo guarda un procesador los negativos
Con n bits hay 2ⁿ combinaciones. El complemento a 2 reparte la mitad para los negativos y la otra mitad para el cero y los positivos, de modo que el rango va de −2ⁿ⁻¹ a 2ⁿ⁻¹ − 1: con 8 bits, de −128 a 127. Su gran ventaja es que la suma y la resta usan el mismo circuito sumador que los números sin signo: el hardware no necesita saber si el número es negativo.
El bit más significativo pesa −2ⁿ⁻¹ en lugar de +2ⁿ⁻¹. Por eso 11010011₂ en 8 bits vale −128 + 64 + 16 + 2 + 1 = −45.
Método rápido para un negativo
- Escribe el valor absoluto en binario con n bits.
- Invierte todos los bits (complemento a 1).
- Suma 1.
Atajo equivalente: copia los bits desde la derecha hasta el primer 1 incluido e invierte el resto.
Ejemplo resuelto: −45 + 100 en 8 bits
45 = 00101101; invertido, 11010010; más 1, 11010011 (−45). 100 = 01100100. Al sumar 11010011 + 01100100 se obtiene 1 00110111; el acarreo que sale del bit 8 se descarta y queda 00110111 = 55, el resultado correcto. En cambio, 100 + 100 = 200 no cabe en 8 bits con signo: el resultado 11001000 se interpreta como −56. Eso es un desbordamiento.
Errores comunes
- Confundir el acarreo final con el desbordamiento: en complemento a 2 el acarreo se descarta; hay desbordamiento cuando dos números del mismo signo producen un resultado de signo contrario.
- Olvidar fijar el número de bits: −45 no tiene una única representación hasta saber si son 8, 16 o 32 bits.
- Pensar que el rango es simétrico: hay un negativo más que positivos (−128 no tiene opuesto en 8 bits).
Preguntas frecuentes
¿Qué es el desbordamiento en la práctica?
Un error clásico de software: un contador de 8 bits con signo que llega a 127 y al sumar 1 pasa a −128.
¿Cómo se extiende un número a más bits?
Copiando el bit de signo hacia la izquierda (extensión de signo): −45 en 16 bits es 1111111111010011.
¿Y los números con decimales?
Se usan formatos de coma flotante; prueba el conversor IEEE 754.
Herramienta educativa. Los resultados se calculan en tu navegador; ningún dato se envía a un servidor.