|
|
|
|
|
|
CarlosPes.com
> Curso
de Representación de los Datos
> Complemento a 2 (dos) |
|
Complemento a 2 (dos)
|
|
|
|
|
¿Cómo se
escribe un número en Complemento a 2?
|
|
En
este sistema de representación, los números
positivos se expresan igual que en Signo Magnitud
o que en Binario
Puro. Sin embargo, para escribir los números
negativos se
utiliza el Complemento a la Base. Formalmente,
el Complemento a la Base
de un número entero positivo N
de base b, se expresa de la siguiente
manera:
Cb(N)
= bn - N
siendo n el número de cifras
empleadas en la representación del
número. Por tanto, en codificación binaria, el Complemento
a 2
(C2) de un número entero
positivo (N) se
puede expresar como:
C2(N)
= 2n - N = NC2
El rango de representación en Complemento a 2 es: |
|
 |
|
Figura - Rango de
representación en Complemento a 2. |
|
Ejemplo
1: En Complemento
a 2, para n = 16, el rango de
representación es: |
|
 |
|
Ejemplo
2: En Complemento
a 2, para n
= 16, el
número positivo 950310
se representa igual que en Complemento a 1, Signo Magnitud
o Binario Puro: |
|
950310
= 0010010100011111C2 = 0010010100011111C1
= 0010010100011111SM = 0010010100011111BP
Ejemplo 3: En Complemento a 2, para n
= 16, el número -950310
se escribe calculando el Complemento a la Base del
número 950310
representado en base 2, es decir, del
número 100101000111112:
C2(N)
= C2(10010100011111) =
= 2n - N =
= 216 - 10010100011111 =
= 10000000000000000 - 10010100011111 =
= 1101101011100000C2
En consecuencia,
-950310
= 1101101011100001C2
Fíjese que, el Complemento a 2 de un
número
entero positivo (N) escrito en binario es
el resultado de cambiar todos
los bits de valor (ceros por unos y unos por
ceros), obteniendo así el Complemento a 1 del
número y, después, sumarle 1.
C2(N)
= C1(N) + 1 = NC1 + 1 = NC2
De esta manera, en tan solo dos pasos se puede calcular,
fácilmente, el Complemento a 2. Por ejemplo, dado el
número: |
|
 |
|
para
calcular el Complemento a 2, en un primer paso se calcula el
Complemento a 1 de dicho número: |
|
 |
|
y,
en un segundo paso, se le suma 1 al
número obtenido en Complemento a 1: |
|
 |
|
El
resultado es el esperado: |
|
 |
|
Por
otro lado, si se pretende calcular el valor en base 10 de un
número entero positivo (N)
escrito Complemento a 2, se puede
usar la misma fórmula que en Signo Magnitud o que en Binario
Puro.
Un número (N) representado en
Complemento a 2 es positivo si
el bit más significativo es cero. En caso contrario, el
número será negativo, y para calcular su valor en
base 10, se tiene que utilizar la fórmula: |
|
 |
|
Figura - Fórmula para
calcular, en base 10, el valor de un número entero negativo
escrito en Complemento a 2. |
|
Ejemplo
4: Para calcular
el valor en base 10 del número 1001000000000110C2,
se debe emplear la fórmula anterior. De
tal forma que:
1001000000000110C2 = ( (-1∙215) + (1∙212 + 1∙22 + 1∙21) )10 = ( (-32768) + (4102) )10 = -2866610 |
|
|
|
|
|
|
|
|