fbpx
Wikipedia

Representación de números con signo

En matemáticas, los números negativos en cualquier base se representan del modo habitual, precediéndolos con un signo «−». Sin embargo, en una computadora hay varias formas de representar el signo de un número. Este artículo trata cuatro métodos de extender el sistema binario para representar números con signo: signo y magnitud, complemento a uno, complemento a dos y exceso K, donde normalmente K equivale a bn-1 - 1.

Para la mayoría de usos, las computadoras modernas utilizan típicamente la representación en complemento a dos, aunque pueden usarse otras en algunas circunstancias.

En las secciones siguientes nos referiremos exclusivamente al caso de números signados en binario (y contrastaremos con el decimal con fines didácticos). Esto no significa que lo mostrado aquí se pueda llevar en forma análoga a otras bases (hexadecimal, u octal, por ejemplo). El valor absoluto de un número es la distancia que lo separa del cero en la recta numérica; es el propio número tras prescindir de su signo. El valor absoluto se escribe entre barras: | |. Valor absoluto de 3:|3| =3. El valor absoluto de -3: |-3| =3. Los números menores que cero son por supuesto los números negativos.

El número que tiene como valor absoluto 125 y es menor que cero es -125 porque el valor absoluto solo toma en cuenta la distancia, no la dirección, razón por la cual este solo puede ser positivo o cero. |+ Para n = 8 (8 bits) en Signo y Magnitud



Un primer enfoque al problema de representar un número signado de n-bits consiste en asignar:

  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.

Y se conoce como Signo y Magnitud.

Este enfoque es directamente comparable a la forma habitual de mostrar el signo (colocando "+" o "-" al lado de la magnitud del número). Algunas de las primeras computadoras binarias (la IBM 7090) utilizaron esta representación, quizás por su relación obvia con la práctica habitual.

El formato Signo y Magnitud es además el habitual para la representación del significando en números en punto flotante.

Ejemplo de Signo y Magnitud

Sea una representación en formato de Signo y Magnitud que nos permite codificar un número entero en binario 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. Pero utilizando un bit para indicar el signo, se podrán representar: el cero más 127 números positivos (bit de signo en 0), y 127 números negativos (bit de signo en 1); 255 números en total.

Supongamos ahora, que tenemos que representar el número -9710 (decimal). Procedemos a:

  1. Tomar nota del signo del número reducido o simplificado -9710, que siendo negativo, llevará como bit de signo un 1;
  2. Realizar la conversión: el valor absoluto de -9710 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: 01101012 = |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 +5310.

Desventajas de la representación en Signo y Magnitud

Siguiendo con el ejemplo de n = 8 (8 bits).

  • Es más complejo operar aritméticamente. Para realizar una suma, por ejemplo, primero hay que determinar si los dos números tienen el mismo signo, y en caso de que sea así, realizar la suma de la parte significativa, pero en caso contrario, restar el mayor del menor y asignar el signo del mayor.
  • Posee doble representación del cero. Al representar en Signo y Magnitud, aparece el cero signado: 000000002 (+010) y 100000002 (-010).

Ventajas de la representación en signo y magnitud

Siguiendo con el ejemplo de n = 8 (8 bits).

  • Posee un rango simétrico: los números van del +12710 = 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 (-(2n-1-1); 2n-1-1), o bien ± (2n-1-1).

Complemento a la base menos uno

Para n = 8 (8 bits) en Complemento a uno
Valores de 8 bits Interpretado en Complemento a uno en decimal Interpretado como Entero sin signo en decimal
00000000 0 0
00000001 1 1
00000010 2 2
... ... ...
01111110 126 126
01111111 127 127
10000000 −127 128
10000001 −126 129
10000010 −125 130
... ... ...
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.

Observar así que la representación en Complemento a uno de un número negativo se puede obtener de la representación en Signo y Magnitud por una mera inversión de unos por ceros y ceros por unos del significando.

Este sistema numérico de representación era común en computadoras más antiguas; el PDP-1 y la serie de UNIVAC 1100/2200, entre muchas otras, utilizaron la aritmética en complemento a uno.

Ejemplo de complemento a uno

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 este 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).

Supongamos ahora, que tenemos que representar el número -9710. Procedemos a:

  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 -9710 es |-9710| = 9710. Que en binario es: 11000012, y el complemento a uno de 11000012 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) = 10010102 = |7410|. Siendo que el bit de signo es 1, el número real es -7410. Si el bit de signo fuese 0, el número hubiese sido 01101012 = +5310 ('sin complementar a uno).

Desventajas de la representación en Complemento a uno

Siguiendo con el ejemplo de n = 8 (8 bits).

  • Posee doble representación del cero. Al representar en Complemento a uno, aparece nuevamente el cero signado: 000000002 (+010) y 111111112 (-010).

Ventajas de la representación en Complemento a uno

Siguiendo con el ejemplo de n = 8 (8 bits).

  • Posee un rango simétrico: los números van del +12710 = 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 (-(2n-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: 000101012 + 100111102 = 101100112 (+2110 + -9710 = -7610) puesto que el end-around carry es cero; pero, 000000102 + 111111102 = 1000000002 (+210 + -110 = -010 ≠ +110), que corregimos mediante 000000102 + 111111102 = 000000002 + 12 = 000000012, que es el resultado correcto.

Los protocolos 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).

Complemento a dos (o a la base)

Para n = 8 (8 bits) en Complemento a dos
Valores de 8 bits Interpretado en Complemento a dos en decimal Interpretado como Entero sin signo en decimal
00000000 0 0
00000001 1 1
00000010 2 2
... ... ...
01111110 126 126
01111111 127 127
10000000 −128 128
10000001 −127 129
10000010 −126 130
... ... ...
11111101 −3 253
11111110 −2 254
11111111 −1 255

Otro enfoque sería representar números negativos usando el complemento a la base. En el caso de los números binarios, sería el complemento a dos y la forma de obtener el complemento a dos de un número binario es mediante la obtención del complemento a uno y sumarle uno, o bien:

Ejemplo 1 Ejemplo 2
1. Empezando desde la derecha encontramos el primer '1' 0101001 0101100
2. Hacemos un NOT a todos los bits que quedan por la izquierda 1010111 1010100

De esta forma, en la representación por Complemento a dos 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 dos del valor absoluto del número, en caso de ser negativo.

Observar así que la representación en Complemento a dos de un número negativo se puede obtener de la representación en Signo y Magnitud por una mera inversión de unos por ceros y ceros por unos del significando, y sumarle uno al valor obtenido.

Ejemplo de complemento a dos

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 este 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).

Supongamos ahora, que tenemos que representar el número -9710. Procedemos a:

  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 -9710 es |-9710| = 9710. Que en binario es: 11000012, y el complemento a uno de 11000012 es C1(1100001) = 00111102, le sumamos uno para obtener el complemento a dos: 00111102 + 00000012 = 00111112;
  • 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 -7510. Si el bit de signo fuese 0, el número hubiese sido 01101012 = +5310 (sin complementar a dos).

Desventajas de la representación en Complemento a dos

Siguiendo con el ejemplo de n = 8 (8 bits).

  • Posee un rango asimétrico: los números van del +12710 011111112, pasando por el +010, 000000002. Y aquí aparece la primera diferencia, el 111111112, ya no es -010 como en la representación anterior, sino que es -110, 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 -12810 (para 8 bits). Luego, en forma general, para n-bits, el rango (en decimal) para Complemento a dos es (-2n-1; 2n-1-1).

Ventajas de la representación en complemento a dos

Siguiendo con el ejemplo de n = 8 (8 bits).

  • No posee doble representación del cero.
  • Permite operar aritméticamente.

ejemplos 1.Convertir los siguientes números decimales en octal y hexadecimal. https://i.ibb.co/vqX14jP/Imagen1.png 2.Convertir los siguientes números binarios en decimal https://i.ibb.co/RSqyR2p/Imagen2.png 3.Convertir los siguientes números hexadecimales a decimal y binario https://i.ibb.co/YZ94XWQ/Imagen4.png

Para n = 8 (8 bits) en Exceso a 127
Valores de 8 bits Interpretado en Exceso a 127 en decimal Interpretado como Entero sin signo en decimal
00000000 -127 0
00000001 -126 1
00000010 -125 2
... ... ...
01111110 -1 126
01111111 0 127
10000000 1 128
10000001 2 129
10000010 3 130
... ... ...
11111101 125 253
11111110 126 254
11111111 127 255

Un último enfoque al problema de representar un número signado es el exceso a K, donde a cada número se le suma el mismo valor, y está en exceso por dicho valor. Este formato es habitual para la representación del exponente en números en punto flotante.

K no tiene un valor estandarizado, pero suele tomarse como 2n-1 (que coincide con el complemento a dos con el bit más significativo negado), o como 2n-1-1 (como en el caso de la norma IEEE-754).

Ejemplo de Exceso 2n-1

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 = 12810. Con 8 bits, podemos representar, 28 = 256 números.

Supongamos ahora, que tenemos que representar el número -9710 (decimal). Procedemos a:

  1. Tomar el número -9710 y sumarle el exceso, en este caso 12810, luego -9710 + 12810 = 3110;
  2. Convertimos a binario, en este caso. Luego, 3110 = 000111112.

Para el caso inverso, dado un número binario en Exceso 12810, por ejemplo, 101101012, procedemos a:

  1. Convertir el número a la base deseada, por ejemplo, en decimal: 101101012 = 18110;
  2. Pero el valor obtenido está en exceso 128, luego debemos quitarle dicho exceso, restando 128: 18110 - 12810 = 5310.

Desventajas de la representación en Exceso 2n-1-1

Siguiendo con el ejemplo de n = 8 (8 bits).

  • Requiere de operaciones aritméticas intermedias para su obtención, y de cambiar el número de bits se deben actualizar dichas operaciones intermedias para reflejar el nuevo exceso.
  • Posee rango asimétrico: este va desde +12810 = 111111112 hasta -12710 = 000000002. Y en forma general, para n-bits, el rango (en decimal) para Exceso 2n es (-2n-1+1; 2n-1-1).

Ventajas de la representación en Exceso 2n-1-1

Siguiendo con el ejemplo de n = 8 (8 bits).

  • El menor número posible de representar consiste en todos los bits en cero y el mayor en unos.
  • Permite operar aritméticamente, pero hay que tener en cuenta que cada operación lleva asociado su exceso y esto hay que restárselo al resultado final, para corregir la representación. Por ejemplo, 000111102 + 101101012 = 110100112 (-9710 + 5410 = 21110 ≠ -4310). El resultado, en aparente exceso 12710, 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.


Tabla de comparación

La tabla siguiente compara la representación de los enteros entre 8 y -8 (incluidos) usando 4 bits.

Representación de enteros de 4 bits
Decimal Entero sin signo Signo y Magnitud Complemento a uno Complemento a dos En exceso a 7
+8 1000 n/d n/d n/d 1111
+7 0111 0111 0111 0111 1110
+6 0110 0110 0110 0110 1101
+5 0101 0101 0101 0101 1100
+4 0100 0100 0100 0100 1011
+3 0011 0011 0011 0011 1010
+2 0010 0010 0010 0010 1001
+1 0001 0001 0001 0001 1000
+0 0000 0000 0000 0000 0111
-0 n/d 1000 1111 n/d n/d
-1 n/d 1001 1110 1111 0110
-2 n/d 1010 1101 1110 0101
-3 n/d 1011 1100 1101 0100
-4 n/d 1100 1011 1100 0011
-5 n/d 1101 1010 1011 0010
-6 n/d 1110 1001 1010 0001
-7 n/d 1111 1000 1001 0000
-8 n/d n/d n/d 1000 n/d

Véase también

  •   Datos: Q5359789

representación, números, signo, matemáticas, números, negativos, cualquier, base, representan, modo, habitual, precediéndolos, signo, embargo, computadora, varias, formas, representar, signo, número, este, artículo, trata, cuatro, métodos, extender, sistema, b. En matematicas los numeros negativos en cualquier base se representan del modo habitual precediendolos con un signo Sin embargo en una computadora hay varias formas de representar el signo de un numero Este articulo trata cuatro metodos de extender el sistema binario para representar numeros con signo signo y magnitud complemento a uno complemento a dos y exceso K donde normalmente K equivale a bn 1 1 Para la mayoria de usos las computadoras modernas utilizan tipicamente la representacion en complemento a dos aunque pueden usarse otras en algunas circunstancias En las secciones siguientes nos referiremos exclusivamente al caso de numeros signados en binario y contrastaremos con el decimal con fines didacticos Esto no significa que lo mostrado aqui se pueda llevar en forma analoga a otras bases hexadecimal u octal por ejemplo El valor absoluto de un numero es la distancia que lo separa del cero en la recta numerica es el propio numero tras prescindir de su signo El valor absoluto se escribe entre barras Valor absoluto de 3 3 3 El valor absoluto de 3 3 3 Los numeros menores que cero son por supuesto los numeros negativos El numero que tiene como valor absoluto 125 y es menor que cero es 125 porque el valor absoluto solo toma en cuenta la distancia no la direccion razon por la cual este solo puede ser positivo o cero Para n 8 8 bits en Signo y MagnitudUn primer enfoque al problema de representar un numero signado de n bits consiste en asignar un bit para representar el signo Ese bit a menudo es el bit mas significativo o MSB de sus siglas en ingles y por convencion un 0 denota un numero positivo y un 1 denota un numero negativo los n 1 bits restantes para representar el significando que es la magnitud del numero en valor absoluto Y se conoce como Signo y Magnitud Este enfoque es directamente comparable a la forma habitual de mostrar el signo colocando o al lado de la magnitud del numero Algunas de las primeras computadoras binarias la IBM 7090 utilizaron esta representacion quizas por su relacion obvia con la practica habitual El formato Signo y Magnitud es ademas el habitual para la representacion del significando en numeros en punto flotante Indice 1 Ejemplo de Signo y Magnitud 2 Desventajas de la representacion en Signo y Magnitud 3 Ventajas de la representacion en signo y magnitud 4 Complemento a la base menos uno 4 1 Ejemplo de complemento a uno 4 2 Desventajas de la representacion en Complemento a uno 4 3 Ventajas de la representacion en Complemento a uno 5 Complemento a dos o a la base 5 1 Ejemplo de complemento a dos 5 2 Desventajas de la representacion en Complemento a dos 5 3 Ventajas de la representacion en complemento a dos 5 4 Ejemplo de Exceso 2n 1 5 5 Desventajas de la representacion en Exceso 2n 1 1 5 6 Ventajas de la representacion en Exceso 2n 1 1 6 Tabla de comparacion 7 Vease tambien Ejemplo de Signo y Magnitud Editar Sea una representacion en formato de Signo y Magnitud que nos permite codificar un numero entero en binario 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 teoria al menos vease Desventajas mas abajo 28 256 numeros Pero utilizando un bit para indicar el signo se podran representar el cero mas 127 numeros positivos bit de signo en 0 y 127 numeros negativos bit de signo en 1 255 numeros en total Supongamos ahora que tenemos que representar el numero 9710 decimal Procedemos a Tomar nota del signo del numero reducido o simplificado 9710 que siendo negativo llevara como bit de signo un 1 Realizar la conversion el valor absoluto de 9710 es 9710 9710 Que en binario es 11000012 Colocar todo junto el numero 9710 en binario con formato de Signo y Magnitud es 111000012 Donde el 1 en el bit mas significativo indica un numero negativo y 11000012 es el significando en valor absoluto Para el caso inverso dado un numero binario en Signo y Magnitud por ejemplo 101101012 procedemos a Analizar el bit mas significativo que siendo un 1 indica que el numero es negativo Convertir el significando a la base deseada por ejemplo en decimal tomando en cuenta que el valor obtenido esta en valor absoluto y la magnitud real estara dada por el bit de signo obtenido antes 01101012 5310 Siendo que el bit de signo es 1 el numero real es 5310 Si el bit de signo fuese 0 el numero hubiese sido 5310 Desventajas de la representacion en Signo y Magnitud Editar Siguiendo con el ejemplo de n 8 8 bits Es mas complejo operar aritmeticamente Para realizar una suma por ejemplo primero hay que determinar si los dos numeros tienen el mismo signo y en caso de que sea asi realizar la suma de la parte significativa pero en caso contrario restar el mayor del menor y asignar el signo del mayor Posee doble representacion del cero Al representar en Signo y Magnitud aparece el cero signado 000000002 010 y 100000002 010 Ventajas de la representacion en signo y magnitud Editar Siguiendo con el ejemplo de n 8 8 bits Posee un rango simetrico los numeros van del 12710 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 2n 1 1 2n 1 1 o bien 2n 1 1 Complemento a la base menos uno EditarArticulo principal Complemento a uno Para n 8 8 bits en Complemento a uno Valores de 8 bits Interpretado en Complemento a uno en decimal Interpretado como Entero sin signo en decimal00000000 0 000000001 1 100000010 2 2 01111110 126 12601111111 127 12710000000 127 12810000001 126 12910000010 125 130 11111101 2 25311111110 1 25411111111 0 255 Otro enfoque seria representar numeros negativos usando el complemento a la base menos uno En el caso de los numeros binarios seria el complemento a uno y la forma del complemento a uno de un numero binario es un NOT bit a bit aplicado al numero es decir la inversion de unos por ceros y ceros por unos De esta forma en la representacion por Complemento a uno de un numero signado de n bits asignamos un bit para representar el signo Ese bit a menudo es el bit mas significativo y por convencion un 0 denota un numero positivo y un 1 denota un numero negativo los n 1 bits restantes para representar el significando que es la magnitud del numero en valor absoluto para el caso de numeros positivos o bien en el complemento a uno del valor absoluto del numero en caso de ser negativo Observar asi que la representacion en Complemento a uno de un numero negativo se puede obtener de la representacion en Signo y Magnitud por una mera inversion de unos por ceros y ceros por unos del significando Este sistema numerico de representacion era comun en computadoras mas antiguas el PDP 1 y la serie de UNIVAC 1100 2200 entre muchas otras utilizaron la aritmetica en complemento a uno Ejemplo de complemento a uno Editar Sea una representacion 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 representacion en Signo y Magnitud esto nos otorga 1 bit para el signo y 7 bits para la magnitud Con 8 bits podemos representar en teoria al menos vease nuevamente Desventajas mas abajo 28 256 numeros Los cuales segun este formato van a estar repartidos entre 128 numeros positivos bit de signo en 0 y 128 numeros negativos bit de signo en 1 Supongamos ahora que tenemos que representar el numero 9710 Procedemos a Tomar nota del signo del numero 9710 que siendo negativo llevara como bit de signo un 1 Como el signo es negativo el numero a continuacion del bit de signo debera expresarse en complemento a uno Al realizar la conversion el valor absoluto de 9710 es 9710 9710 Que en binario es 11000012 y el complemento a uno de 11000012 es C1 1100001 00111102 Colocar todo junto el numero 9710 en binario con formato de Complemento a uno es 100111102 Donde el 1 en el bit mas significativo indica un numero negativo y 00111102 es el significando en complemento a uno del valor absoluto del numero Para el caso inverso dado un numero binario en Complemento a uno por ejemplo 101101012 procedemos a Analizar el bit mas significativo que siendo un 1 indica que el numero es negativo Convertir el significando a la base deseada por ejemplo en decimal tomando en cuenta que el valor obtenido esta en valor absoluto que la magnitud real estara dada por el bit de signo obtenido antes y que en caso de ser bit de signo negativo como es el caso se debera obtener el complemento a uno C1 0110101 10010102 7410 Siendo que el bit de signo es 1 el numero real es 7410 Si el bit de signo fuese 0 el numero hubiese sido 01101012 5310 sin complementar a uno Desventajas de la representacion en Complemento a uno Editar Siguiendo con el ejemplo de n 8 8 bits Posee doble representacion del cero Al representar en Complemento a uno aparece nuevamente el cero signado 000000002 010 y 111111112 010 Ventajas de la representacion en Complemento a uno Editar Siguiendo con el ejemplo de n 8 8 bits Posee un rango simetrico los numeros van del 12710 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 2n 1 1 2n 1 1 o bien 2n 1 1 Permite operar aritmeticamente NOTA al operar se debe sumar el acarreo obtenido al final de la adicion resta realizadas conocido como end around carry en caso de haberlo obtenido para conseguir el resultado correcto Por ejemplo 000101012 100111102 101100112 2110 9710 7610 puesto que el end around carry es cero pero 000000102 111111102 1 000000002 210 110 010 110 que corregimos mediante 000000102 111111102 000000002 1 2 000000012 que es el resultado correcto Los protocolos de Internet IPv4 ICMP UDP y TCP usan todos el mismo algoritmo de suma de verificacion de 16 bits en complemento a uno Aunque la mayoria de la computadoras carecen del hardware para manejar acarreo del ultimo 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 representacion de todos ceros indica que la suma de verificacion opcional ha sido omitida La otra representacion todos unos indica un valor 0 en la suma de verificacion las sumas de verificacion son obligatorias para IPv4 TCP e ICMP fueron omitidas en IPv6 Complemento a dos o a la base EditarArticulo principal Complemento a dos Para n 8 8 bits en Complemento a dos Valores de 8 bits Interpretado en Complemento a dos en decimal Interpretado como Entero sin signo en decimal00000000 0 000000001 1 100000010 2 2 01111110 126 12601111111 127 12710000000 128 12810000001 127 12910000010 126 130 11111101 3 25311111110 2 25411111111 1 255 Otro enfoque seria representar numeros negativos usando el complemento a la base En el caso de los numeros binarios seria el complemento a dos y la forma de obtener el complemento a dos de un numero binario es mediante la obtencion del complemento a uno y sumarle uno o bien Ejemplo 1 Ejemplo 21 Empezando desde la derecha encontramos el primer 1 0101001 01011002 Hacemos un NOT a todos los bits que quedan por la izquierda 1010111 1010100De esta forma en la representacion por Complemento a dos de un numero signado de n bits asignamos un bit para representar el signo Ese bit a menudo es el bit mas significativo y por convencion un 0 denota un numero positivo y un 1 denota un numero negativo los n 1 bits restantes para representar el significando que es la magnitud del numero en valor absoluto para el caso de numeros positivos o bien en el complemento a dos del valor absoluto del numero en caso de ser negativo Observar asi que la representacion en Complemento a dos de un numero negativo se puede obtener de la representacion en Signo y Magnitud por una mera inversion de unos por ceros y ceros por unos del significando y sumarle uno al valor obtenido Ejemplo de complemento a dos Editar Sea una representacion 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 representacion 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 numeros Los cuales segun este formato van a estar repartidos entre 128 numeros positivos bit de signo en 0 y 128 numeros negativos bit de signo en 1 Supongamos ahora que tenemos que representar el numero 9710 Procedemos a Tomar nota del signo del numero 9710 que siendo negativo llevara como bit de signo un 1 Como el signo es negativo el numero a continuacion del bit de signo debera expresarse en complemento a dos Al realizar la conversion el valor absoluto de 9710 es 9710 9710 Que en binario es 11000012 y el complemento a uno de 11000012 es C1 1100001 00111102 le sumamos uno para obtener el complemento a dos 00111102 00000012 00111112 Colocar todo junto el numero 9710 en binario con formato de Complemento a dos es 100111112 Donde el 1 en el bit mas significativo indica un numero negativo y 00111112 es el significando en complemento a dos del valor absoluto del numero Para el caso inverso dado un numero binario en Complemento a dos por ejemplo 101101012 procedemos a Analizar el bit mas significativo que siendo un 1 indica que el numero es negativo Convertir el significando a la base deseada por ejemplo en decimal tomando en cuenta que el valor obtenido esta en valor absoluto que la magnitud real estara dada por el bit de signo obtenido antes y que en caso de ser bit de signo negativo como es el caso se debera 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 numero real es 7510 Si el bit de signo fuese 0 el numero hubiese sido 01101012 5310 sin complementar a dos Desventajas de la representacion en Complemento a dos Editar Siguiendo con el ejemplo de n 8 8 bits Posee un rango asimetrico los numeros van del 12710 011111112 pasando por el 010 000000002 Y aqui aparece la primera diferencia el 111111112 ya no es 010 como en la representacion anterior sino que es 110 y al llegar al 100000002 nos encontramos con que el complemento a dos de 100000002 es 100000002 el mismo numero Por convencion se asigna a este numero particular el valor 12810 para 8 bits Luego en forma general para n bits el rango en decimal para Complemento a dos es 2n 1 2n 1 1 Ventajas de la representacion en complemento a dos Editar Siguiendo con el ejemplo de n 8 8 bits No posee doble representacion del cero Permite operar aritmeticamente ejemplos 1 Convertir los siguientes numeros decimales en octal y hexadecimal https i ibb co vqX14jP Imagen1 png 2 Convertir los siguientes numeros binarios en decimal https i ibb co RSqyR2p Imagen2 png 3 Convertir los siguientes numeros hexadecimales a decimal y binario https i ibb co YZ94XWQ Imagen4 png Para n 8 8 bits en Exceso a 127 Valores de 8 bits Interpretado en Exceso a 127 en decimal Interpretado como Entero sin signo en decimal00000000 127 000000001 126 100000010 125 2 01111110 1 12601111111 0 12710000000 1 12810000001 2 12910000010 3 130 11111101 125 25311111110 126 25411111111 127 255 Un ultimo enfoque al problema de representar un numero signado es el exceso a K donde a cada numero se le suma el mismo valor y esta en exceso por dicho valor Este formato es habitual para la representacion del exponente en numeros en punto flotante K no tiene un valor estandarizado pero suele tomarse como 2n 1 que coincide con el complemento a dos con el bit mas significativo negado o como 2n 1 1 como en el caso de la norma IEEE 754 Ejemplo de Exceso 2n 1 Editar Sea una representacion en formato de Exceso que nos permite codificar en binario en punto fijo con 8 bits un byte Luego los numeros 8 bits seran representados en Exceso a 28 1 12810 Con 8 bits podemos representar 28 256 numeros Supongamos ahora que tenemos que representar el numero 9710 decimal Procedemos a Tomar el numero 9710 y sumarle el exceso en este caso 12810 luego 9710 12810 3110 Convertimos a binario en este caso Luego 3110 000111112 Para el caso inverso dado un numero binario en Exceso 12810 por ejemplo 101101012 procedemos a Convertir el numero a la base deseada por ejemplo en decimal 101101012 18110 Pero el valor obtenido esta en exceso 128 luego debemos quitarle dicho exceso restando 128 18110 12810 5310 Desventajas de la representacion en Exceso 2n 1 1 Editar Siguiendo con el ejemplo de n 8 8 bits Requiere de operaciones aritmeticas intermedias para su obtencion y de cambiar el numero de bits se deben actualizar dichas operaciones intermedias para reflejar el nuevo exceso Posee rango asimetrico este va desde 12810 111111112 hasta 12710 000000002 Y en forma general para n bits el rango en decimal para Exceso 2n es 2n 1 1 2n 1 1 Ventajas de la representacion en Exceso 2n 1 1 Editar Siguiendo con el ejemplo de n 8 8 bits El menor numero posible de representar consiste en todos los bits en cero y el mayor en unos Permite operar aritmeticamente pero hay que tener en cuenta que cada operacion lleva asociado su exceso y esto hay que restarselo al resultado final para corregir la representacion Por ejemplo 000111102 101101012 110100112 9710 5410 21110 4310 El resultado en aparente exceso 12710 21110 al quitarle dicho exceso es 21110 12710 8410 Pero hay que tener en cuenta que al sumar dos numeros con exceso 12710 debemos restar dos veces el exceso Luego 8410 12710 4310 que es el resultado correcto No hay empaquetacion del numero Por esto nos referimos a que no hay que recordar que partes del numero son signo y significando sino que los n bits son el numero Tabla de comparacion EditarLa tabla siguiente compara la representacion de los enteros entre 8 y 8 incluidos usando 4 bits Representacion de enteros de 4 bits Decimal Entero sin signo Signo y Magnitud Complemento a uno Complemento a dos En exceso a 7 8 1000 n d n d n d 1111 7 0111 0111 0111 0111 1110 6 0110 0110 0110 0110 1101 5 0101 0101 0101 0101 1100 4 0100 0100 0100 0100 1011 3 0011 0011 0011 0011 1010 2 0010 0010 0010 0010 1001 1 0001 0001 0001 0001 1000 0 0000 0000 0000 0000 0111 0 n d 1000 1111 n d n d 1 n d 1001 1110 1111 0110 2 n d 1010 1101 1110 0101 3 n d 1011 1100 1101 0100 4 n d 1100 1011 1100 0011 5 n d 1101 1010 1011 0010 6 n d 1110 1001 1010 0001 7 n d 1111 1000 1001 0000 8 n d n d n d 1000 n dVease tambien Editar Base negativa Datos Q5359789 Obtenido de https es wikipedia org w index php title Representacion de numeros con signo amp oldid 136327908, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos