Informática

Calculadora de complemento a 2

Pasa un entero con signo a complemento a 2 (y a Ca1 y signo-magnitud) con el número de bits que elijas, o interpreta una cadena de bits.

Paso a paso

    Qué es el complemento a 2

    Es la forma en que prácticamente todos los procesadores guardan los enteros con signo. Con n bits, el bit de mayor peso no vale +2n−1 sino −2n−1; el resto de bits suman como siempre. Así, con 8 bits, 1000 0000 es −128 y 1111 1111 es −128 + 127 = −1.

    Su gran ventaja es que sumar y restar funciona con el mismo circuito que para números sin signo: no hay que mirar el signo antes de operar, solo hay un cero y el rango es asimétrico, de −2n−1 a 2n−1 − 1.

    Cómo pasar un negativo a complemento a 2

    1. Escribe el valor absoluto en binario con los n bits.
    2. Invierte todos los bits (eso es el complemento a 1).
    3. Suma 1.

    Ejemplo · −45 con 8 bits

    45 = 0010 1101 → invertido 1101 0010 → +1 = 1101 0011. Comprobación: −128 + 64 + 16 + 2 + 1 = −45.

    Atajo para hacerlo de cabeza: recorre los bits de derecha a izquierda, copia todos hasta el primer 1 (incluido) e invierte el resto.

    Comparación con otras representaciones

    RepresentaciónRango con n bitsCerosCómo se niega
    Signo-magnitud−(2n−1−1) … 2n−1−1Dos (+0 y −0)Cambiar el bit de signo
    Complemento a 1−(2n−1−1) … 2n−1−1DosInvertir todos los bits
    Complemento a 2−2n−1 … 2n−1−1UnoInvertir y sumar 1
    Exceso 2n−1−2n−1 … 2n−1−1UnoSe guarda valor + 2n−1

    El exceso (o sesgo) es el que usa el exponente de la coma flotante; lo tienes en el conversor IEEE 754.

    Desbordamiento al sumar

    Si sumas dos números del mismo signo y el resultado sale con el signo contrario, ha habido desbordamiento (overflow): el resultado real no cabe en n bits. Sumar dos números de distinto signo nunca desborda. El acarreo que sale del último bit no indica error en complemento a 2: simplemente se descarta.

    Ejemplo · 100 + 50 con 8 bits

    0110 0100 + 0011 0010 = 1001 0110. Ambos operandos son positivos y el resultado empieza por 1: desborda. Leído en Ca2 da −106 en lugar de 150, que se sale del rango −128…127.

    Preguntas frecuentes

    ¿Por qué −128 no tiene positivo correspondiente con 8 bits?

    Porque hay 256 combinaciones y una se gasta en el cero. Quedan 255 para repartir: 128 negativas y 127 positivas. Si niegas −128 (1000 0000) invirtiendo y sumando 1, vuelves a obtener 1000 0000.

    ¿Cómo extiendo un número a más bits?

    Con extensión de signo: copia el bit de signo hacia la izquierda. −45 en 8 bits es 1101 0011 y en 16 bits es 1111 1111 1101 0011. Rellenar con ceros cambiaría el valor.

    ¿Qué diferencia hay entre acarreo (C) y desbordamiento (V)?

    C es el acarreo que sale del bit más significativo y es el que importa al operar sin signo. V indica que el resultado con signo no cabe. Una misma suma puede activar uno, otro, ambos o ninguno.

    Más herramientas de informática