Contenidos
Complemento a dos
La representación en complemento a dos, al igual que la representación en signo-magnitud, usa el bit más significativo como bit de signo, facilitando la comprobación de si el entero es positivo o negativo
Difiere de la representación en signo-magnitud en la forma de interpretar los bits restantes
Consideremos un entero A de n bits representado en complemento a dos. Si A es positivo, el bit de signo, a_{n-1} es 0. Los restantes bits representan la magnitud del número de la misma forma que en la representación signo-magnitud, es decir:
\sum\limits_{i=0}^{n} 0^{n-2} \cdot a_i\text{ si }A\geq 0
El número 0 se identifica como positivo y tiene, por tanto, un bit de signo 0 y una magnitud de todo ceros. El rango de los enteros positivos que pueden representarse es, desde 0 (todos los bits son 0) hasta 2^{n-1}-1 (todos los bits son 1). Cualquier número mayor requeriría más bits
Para un número A negativo, el bit de signo, a_n-1 es 1. Los n-1 bits restantes pueden tomar cualquiera de las 2^{n-1} combinaciones. Por lo tanto, los enteros negativos pueden representarse desde -1 hasta (-2)^{n-1}, es decir:
A=(-2)^{n-1}\cdot a_{n-1}
Sería deseable asignar los bits de los enteros negativos de tal manera que su manipulación aritmética pudiera efectuarse de una forma directa, similar a la de los enteros sin signo. En la representación sin signo, para calcular el valor de un entero a partir de su expresión en bits, el peso más significativo es 2^{n-1}
El caso general correspondería a aplicar la fórmula:
A=(-2)^{n-1} \cdot a_{n-1} + \sum\limits_{i=0}^{n} 0^{n-2} \cdot a_iPropiedades
- Rango de valores
(-2)^{n-1}\text{ a } 2^{n-1}-1 - Número de representaciones del 0
Única - Negación
Ejecutar el complemento booleano de cada bit y sumar 1 al patrón de bits resultante - Ampliación de la longitud en bits
Las posiciones extra se añaden a la izquierda, rellenandolas con el valor del bit de signo original - Regla del desbordamiento
Si se suman dos números de igual signo (ambos positivo ó negativos), hay desbordamiento si y sólo si, el resultado tiene signo opuesto - Regla para la resta
Para restar B de A, se toma el complemento a dos de B y se suma a A
Conversiones
Ejemplo: Convertir de decimal a complemento a dos
Vamos a convertir \pm 18 a complemento a dos, primero lo convertimos a binario
Número | Cociente | Resto |
\frac{18}{2} | 9 | 0 |
\frac{9}{2} | 4 | 1 |
\frac{4}{2} | 2 | 0 |
\frac{2}{2} | 1 | 0 |
Entonces tenemos que la parte binaria es:
18_{(10} = 10010_{(2}
Para hallar el -18 hay que utilizar la negación del 18
Se ejecuta el complemento booleano de cada bit dentro de 1 palabra (recordemos que son 8 bits), entonces tenemos:
18_{(10} = 00010010_{(2}
00010010 \rightarrow 11101101
Se le suma 1 al patrón de bits resultante
11101101+1=11101110
Entonces tenemos que: