Documente Academic
Documente Profesional
Documente Cultură
complemento a 2
Este es un sistema que nos permite representar números binarios de forma negativa, en
donde el MSB (Bit mas Significativo) es el bit del signo.
Si este bit es 0 entonces el numero binario es positivo (+), si el bit del signo es 1,
entonces el numero es negativo(-) los siete bits restantes del registro representan la
magnitud del numero 1010110, para complementar mejor la explicación tendremos que
dedicarle mucha atención a la explicación de conversiones donde interviene este tipo de
numeración, que es bastante utilizado en los microprocesadores, ya que estos manejan
tanto números positivos como números negativos.
FORMA COMPLEMENTO A 1
FORMA COMPLEMENTO A 2
Puesto que el sistema binario sólo tiene dos estados, el complemento puede obtenerse
simplemente escribiendo cada bit en su estado opuesto, es decir, cada 1 se cambia por 0 y
cada 0 se cambia por 1
Número 10100011100
Complemento A1 01011100011
Complemento A2
Número 1100110100
Complemento A2 00011001100
Número 1100110100
Complemento A1 0011001011
Complemento A2 0011001100
Comenzando por el bit menos significativo, escribir el número hasta encontrar el primer 1, a
partir de este número cambiar los 1 por 0 y los 0 por 1
Número 1100110 1 00
Complemento A2 0011001 1 00
1 Signo y Magnitud
o 1.1 Ejemplo de Signo y Magnitud
o 1.2 Desventajas de la representación en Signo y Magnitud
o 1.3 Ventajas de la representación en Signo y Magnitud
2 Complemento a la base menos uno
o 2.1 Ejemplo de Complemento a uno
o 2.2 Desventajas de la representación en Complemento a uno
o 2.3 Ventajas de la representación en Complemento a uno
3 Complemento a la base
o 3.1 Ejemplo de Complemento a dos
o 3.2 Desventajas de la representación en Complemento a dos
o 3.3 Ventajas de la representación en Complemento a dos
4 En Exceso a bn-1
00000000 0 0
00000001 1 1
00000010 2 2
10000001 −1 129
10000010 −2 130
1. un bit para representar el signo. Ese bit a menudo es el bit más significativo o MSB (de
sus siglas en inglés) y, por convención: un 0 denota un número positivo, y un 1 denota
un número negativo;
2. los (n-1)-bits restantes para representar el significando que es la magnitud del número
en valor absoluto.
Sea una representación en formato de Signo y Magnitud que nos permite codificar en
binario en punto fijo con 8 bits (un byte). Esto nos otorga 1 bit para el signo y 7 bits
para la magnitud. Con 8 bits, podemos representar, en teoría al menos (véase
Desventajas, más abajo), 28 = 256 números. Los cuales, según éste formato, van a estar
repartidos entre 128 números positivos (bit de signo en 0) y 128 números negativos (bit
de signo en 1).
1. Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo
un 1;
2. Realizar la conversión: el valor absoluto de -97 10 es |-9710| = 9710. Que en binario es:
11000012;
3. Colocar todo junto, el número -9710 en binario con formato de Signo y Magnitud es:
111000012. Donde el 1 en el bit más significativo indica un número negativo, y
11000012 es el significando en valor absoluto.
Para el caso inverso, dado un número binario en Signo y Magnitud, por ejemplo,
101101012, procedemos a:
1. Analizar el bit más significativo, que siendo un 1 indica que el número es negativo;
2. Convertir el significando a la base deseada, por ejemplo, en decimal, tomando en
cuenta que el valor obtenido está en valor absoluto y la magnitud real estará dada por
el bit de signo obtenido antes: 0110101 2 = |5310|. Siendo que el bit de signo es 1, el
número real es -5310. Si el bit de signo fuese 0, el número hubiese sido +53 10.
Posee un rango simétrico: los números van del +127 10 = 011111112, pasando por el
+010 = 000000002 y el -010 = 100000002, hasta el -12710 = 111111112. Y en forma
general, para n-bits, el rango (en decimal) para Signo y Magnitud es (-2 n-1-1; 2n-1-1), o
bien ± 2n-1-1.
ALEJANDRA:D
00000000 0 0
00000001 1 1
00000010 2 2
11111101 −2 253
11111110 −1 254
11111111 −0 255
Otro enfoque sería representar números negativos usando el complemento a la base
menos uno. En el caso de los números binarios, sería el complemento a uno y la forma
del complemento a uno de un número binario es un NOT bit a bit aplicado al número, es
decir, la inversión de unos por ceros y ceros por unos. De esta forma, en la
representación por Complemento a uno de un número signado de n-bits asignamos:
1. un bit para representar el signo. Ese bit a menudo es el bit más significativo y, por
convención: un 0 denota un número positivo, y un 1 denota un número negativo;
2. los (n-1)-bits restantes para representar el significando que es la magnitud del número
en valor absoluto para el caso de números positivos, o bien, en el complemento a uno
del valor absoluto del número, en caso de ser negativo.
Sea una representación en formato de Complemento a uno que nos permite codificar en
binario en punto fijo con 8 bits (un byte). Al igual que con la representación en Signo y
Magnitud, esto nos otorga 1 bit para el signo y 7 bits para la magnitud. Con 8 bits,
podemos representar, en teoría al menos (véase nuevamente Desventajas, más abajo), 28
= 256 números. Los cuales, según éste formato, van a estar repartidos entre 128
números positivos (bit de signo en 0) y 128 números negativos (bit de signo en 1).
1. Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo
un 1;
2. Como el signo es negativo, el número a continuación del bit de signo, deberá
expresarse en complemento a uno. Al realizar la conversión: el valor absoluto de -97 10
es |-9710| = 9710. Que en binario es: 11000012, y el complemento a uno de 1100001 2 es
C1(1100001) = 00111102;
3. Colocar todo junto, el número -9710 en binario con formato de Complemento a uno es:
100111102. Donde el 1 en el bit más significativo indica un número negativo, y
00111102 es el significando en complemento a uno del valor absoluto del número.
Para el caso inverso, dado un número binario en Complemento a uno, por ejemplo,
101101012, procedemos a:
1. Analizar el bit más significativo, que siendo un 1 indica que el número es negativo;
2. Convertir el significando a la base deseada, por ejemplo, en decimal, tomando en
cuenta que: el valor obtenido está en valor absoluto, que la magnitud real estará dada
por el bit de signo obtenido antes, y que en caso de ser bit de signo negativo (como es
el caso) se deberá obtener el complemento a uno: C1(0110101) = 1001010 2 = |7410|.
Siendo que el bit de signo es 1, el número real es -74 10. Si el bit de signo fuese 0, el
número hubiese sido 01101012 = +5310 ('sin complementar a uno).
Posee un rango simétrico: los números van del +127 10 = 011111112, pasando por el
+010 = 000000002 y el -010 = 111111112, hasta el -12710 = 100000002. Y en forma
general, para n-bits, el rango (en decimal) para Complemento a uno es (-2 n-1-1; 2n-1-1),
o bien ± 2n-1-1.
Permite operar aritméticamente. NOTA: al operar se debe sumar el acarreo obtenido
al final de la adición/resta realizadas (conocido como end-around carry), en caso de
haberlo obtenido, para conseguir el resultado correcto. Por ejemplo: 00010101 2 +
100111102 = 101100112 (+2110 + -9710 = -7610) puesto que el end-around carry es cero;
pero, 000000102 + 111111102 = 1000000002 (+2110 + -9710 = -010 ≠ +110), que corregimos
mediante 000000102 + 111111102 = 000000002 + 12 = 000000012, que es el resultado
correcto.
Los procolos de Internet IPv4, ICMP, UDP y TCP usan todos el mismo algoritmo de
suma de verificación de 16 bits en complemento a uno. Aunque la mayoría de la
computadoras carecen del hardware para manejar acarreo del último bit (end-around
carry), la complejidad adicional es aceptada ya que es igualmente sensible a errores en
todas las posiciones de bits. En UDP, una representación de todos ceros indica que la
suma de verificación opcional ha sido omitida. La otra representación, todos unos,
indica un valor 0 en la suma de verificación (las sumas de verificación son obligatorias
para IPv4, TCP e ICMP; fueron omitidas en IPv6).
00000000 0 0
00000001 1 1
00000010 2 2
11111101 −3 253
11111110 −2 254
11111111 −1 255
Ejemplo 1 Ejemplo 2
1. un bit para representar el signo. Ese bit a menudo es el bit más significativo y, por
convención: un 0 denota un número positivo, y un 1 denota un número negativo;
2. los (n-1)-bits restantes para representar el significando que es la magnitud del número
en valor absoluto para el caso de números positivos, o bien, en el complemento a dos
del valor absoluto del número, en caso de ser negativo.
Sea una representación en formato de Complemento a dos que nos permite codificar en
binario en punto fijo con 8 bits (un byte). Al igual que con la representación en Signo y
Magnitud, y Complemento a uno, esto nos otorga 1 bit para el signo y 7 bits para la
magnitud. Con 8 bits, podemos representar, 28 = 256 números. Los cuales, según éste
formato, van a estar repartidos entre 128 números positivos (bit de signo en 0) y 128
números negativos (bit de signo en 1).
1. Tomar nota del signo del número -9710, que siendo negativo, llevará como bit de signo
un 1;
2. Como el signo es negativo, el número a continuación del bit de signo, deberá
expresarse en complemento a dos. Al realizar la conversión: el valor absoluto de -97 10
es |-9710| = 9710. Que en binario es: 11000012, y el complemento a uno de 1100001 2 es
C1(1100001) = 00111102, le sumamos uno para obtener el complemento a dos:
00111102 + 00000012 = 001111112;
Colocar todo junto, el número -9710 en binario con formato de Complemento a dos es:
100111112. Donde el 1 en el bit más significativo indica un número negativo, y
00111112 es el significando en complemento a dos del valor absoluto del número.
Para el caso inverso, dado un número binario en Complemento a dos, por ejemplo,
101101012, procedemos a:
1. Analizar el bit más significativo, que siendo un 1 indica que el número es negativo;
2. Convertir el significando a la base deseada, por ejemplo, en decimal, tomando en
cuenta que: el valor obtenido está en valor absoluto, que la magnitud real estará dada
por el bit de signo obtenido antes, y que en caso de ser bit de signo negativo (como es
el caso) se deberá obtener el complemento a dos: C2(0110101) = C1(0110101) +
00000012, luego C1(0110101) = 10010102, y al sumarle 1, 10010112 = |7510|. Siendo
que el bit de signo es 1, el número real es -75 10. Si el bit de signo fuese 0, el número
hubiese sido 01101012 = +5310 (sin complementar a dos).
[editar] Desventajas de la representación en
Complemento a dos
Posee un rango asimétrico: los números van del +127 10 011111112, pasando por el
+010, 000000002. Y aquí aparece la primer diferencia, el 111111112, ya no es -010 como
en la representacion anterior, sino que es -1 10, y al llegar al 100000002 nos
encontramos con que el complemento a dos de 100000002 es 100000002, ¡el mismo
número!. Por convención, se asigna a este número particular el valor -128 2 (para 8
bits). Luego, en forma general, para n-bits, el rango (en decimal) para Complemento a
dos es (-2n-1; 2n-1-1).
00000000 -127 0
00000001 -126 1
00000010 -125 2
01111110 -1 126
01111111 0 127
10000000 1 128
10000001 2 129
10000010 3 130
Sea una representación en formato de Exceso que nos permite codificar en binario en
punto fijo con 8 bits (un byte). Luego, los números 8 bits serán representados en Exceso
a 28-1 = 12710. Con 8 bits, podemos representar, 28 = 256 números.
1. Tomar el número -9710 y sumarle el exceso, en este caso 12710, luego -9710 + 12710 =
3010;
2. Convertimos a binario, en este caso. Luego, 30 10 = 000111102.
Para el caso inverso, dado un número binario en Exceso 12710, por ejemplo, 101101012,
procedemos a:
Permite operar aritméticamente, pero hay que tener en cuenta que cada operación
lleva asociado su exceso y esto hay que restarselo al resultado final, para corregir la
representación. Por ejemplo, 000111102 + 101101012 = 110100112 (-9710 + 5410 = 21110
≠ -4310). El resultado, en aparente exceso 127 10, 21110, al quitarle dicho exceso es 21110
- 12710 = 8410. Pero, hay que tener en cuenta que al sumar dos números con exceso
12710, debemos restar, dos veces el exceso. Luego 8410 - 12710 = -4310, que es el
resultado correcto.
No hay empaquetación del número. Por esto nos referimos a que no hay que recordar
que partes del número son signo y significando, sino que los n-bits, son el número.
Obtenido de "http://es.wikipedia.org/wiki/Representaci%C3%B3n_de_n
%C3%BAmeros_con_signo"
Complementos - Presentation Transcript
1.
2. LOS COMPLEMENTOS. El problema que se trata de resolver es la forma de expresar números
negativos en el sistema binario, valiéndonos únicamente de señales que solo pueden ser verdaderas o
falsas. Es cierto que una de las señales podría representar el signo y el resto de las cifras formarían
siempre un valor positivo, pero la electrónica del dispositivo sería compleja porque debería ser capaz de
restar cuando encontrara el signo menos. Parece imposible, pero los complementos permiten hacer
restas mediante sumas y reducen con ello la electrónica de la máquina. ¿Cree por ejemplo que el valor
9279 es igual a -721? Si los valores (en este ejemplo) se manipulan siempre en registros de 4 cifras y
todo lo que se salga desaparece, entonces es cierto y lo vamos a ver: Si hacemos la suma 721 + 9279 se
obtiene el valor 10000, pero como se ha dicho, en un registro de 4 cifras solo caben los 4 ceros y el 1 se
pierde. Si en el registro solo hay ceros, el resultado hay que considerarlo 0, por lo tanto 721 + 9279 = 0, lo
que solo es posible si 9279 es igual a -721.
3. Por supuesto, se puede pensar que se trata de un truco, y lo es, pero esto es lo que funciona
realmente en los dispositivos digitales: Cuando introducimos dos valores y los restamos, la máquina
transforma uno de los datos de manera que resuelve la resta haciendo una suma. Las reglas de la
transformación tienen que ser muy simples ya que de lo contrario no compensaría el esfuerzo y
tratándose del sistema binario, realmente son muy sencillas. El complemento a 1 de un valor binario se
obtiene invirtiendo el estado de todas sus cifras, incluyendo los ceros a la izquierda hasta completar la
capacidad del registro. Por ejemplo, el valor 10011 en un registro de 8 bits (cifras) será 00010011 y su
complemento a 1 será 11101100. El complemento a 2 de un valor binario se obtiene sumando 1 al
complemento a 1. Por ejemplo, el complemento a 2 de 10011 (el mismo anterior) será 11101100 + 1 =
11101101.
4.
o Complemento a uno
o El complemento a uno de un número binario es una operación matemática muy
importante en el campo de la computación, ya que nos permite la representación binaria de
números negativos. Se obtiene al cambiar cada uno de los dígitos del número binario N por su
complementario, esto es, cambiar los unos por ceros y los ceros por unos.
o Por ejemplo:
Número binario = (1010110) 2 = (86) 10
Complemento a uno = (0101001) 2 = ( − 86) 10
Podemos referirnos al complemento a uno como la función complemento a uno , que también se puede
definir como el complemento a dos menos una unidad, es decir . Es trivial a partir de la definición anterior,
que el complemento a dos se puede definir como .
5.
o Por ejemplo, vamos a calcular el complemento a 1 del número (45) 10 que,
expresado en binario (101101) 2 tiene 6 dígitos:
N = 45; n = 6; 2 6 = 64
Su complemento a dos es: y, su complemento a uno es una unidad más pequeño: 010011 -000001
------------ 010010 Existe una desventaja a la hora de utilizar el complemento a uno para representar
números negativos que hace más adecuado el complemento a dos, y es que existen dos posibles
representaciones para el número cero.