Está en la página 1de 16

[Escribir texto]

Temas de la clase 2

1 - Contenidos
 Cantidades enteras y fracciones.
 Aritmética digital: suma y resta en otras bases, método del reloj.
 Complementos, resta por complemento a la base y a la base
menos uno.
 Códigos y representaciones. BCD natural, XS-3, AIKEN, EBCDIC y
ASCII .
 Detección y corrección de errores. Código de Hamming. Código
de Grey.
 Representación según IEEE 754.

Unidad 1. SISTEMAS DE NUMERACIÓN

Contenidos:
• Los sistemas numéricos de distintas bases.
• El sistema numérico binario, su conveniencia tecnológica. Concepto de palabra.
• El sistema numérico, octal y hexadecimal. Métodos de Conversión.
• Expresión generalizada de representaciones de cantidades enteras y fracciones.
• Códigos y representaciones. Conceptos básicos.
• Aritmética digital. Suma y resta en binario, octal y hexadecimal.
• Complementos. Sustracción por complementos.
• Definición de Código. Propiedades. Paridad.
• Detección y corrección de errores. Código de Hamming. Código de Grey.
• Sistema de punto flotante. Representación de números en formato ANSI de simple y doble
precisión. Representación según IEEE 754. Justificación. Uso de formato BCD.

8 – Códigos y representaciones

Los seres humanos nos comunicamos de forma oral por medio de idiomas y dialectos (lenguajes
naturales), pero las computadoras sólo pueden representar información internamente por medio
de elementos físicos que pueden estar en dos estados, que hemos representado con 0 y 1.
Desde el inicio de la computación, en la década de 1940 , se vio esta necesidad y se comenzaron
a idear distintas técnicas y formas de efectuar esta representación de información y se las llamó
códigos.

Las primeras computadoras se usaron para cálculos matemáticos exclusivamente, por lo que sus
códigos se idearon para representar datos numéricos, pero luego aparecieron otros que
permitieron representar además letras, símbolos especiales y caracteres de control.

[Escribir texto] Página 1


[Escribir texto]

Codificación BCD (natural), XS-3 (exceso de 3) y AIKEN

Las primeras codificaciones usadas establecieron una correspondencia entre los símbolos del
sistema numérico decimal y una cantidad determinada de símbolos binarios. La menor cantidad
de símbolos binarios que podían representar a los diez símbolos decimales es cuatro y así
apareció el código BCD (Binary-Coded-Decimal) natural, también llamado BCD 8-4-2-1 por el
peso asignado a cada bit.
Luego se ideó otro código en base al BCD 8-4-2-1 pero desplazado tres lugares respecto a este
en la tabla, razón de su nombre XS-3 o exceso de 3 y otro código ideado fue el AIKEN, que desde
el símbolo 0 al 4 se codifica igual al BCD 8-4-2-1 pero a partir de allí, el 5 es el negado del 4
(negar es cambiar los 1 por 0 y los 0 por 1), el 6 es el negado del 3, el 7 es el negado del 2, el
8 es el negado del 1 y el 9 es el negado del 0, y tiene un peso asignado de 2-4-2-1 a cada bit.

Esas representaciones están dadas en la siguiente tabla:

Símbolo decimal Código


BCD NATURAL XS-3 AIKEN GRAY

0 0000 0011 0000 0000


1 0001 0100 0001 0001
2 0010 0101 0010 0011
3 0011 0110 0011 0010
4 0100 0111 0100 0110
5 0101 1000 1011 0111
6 0110 1001 1100 0101
7 0111 1010 1101 0100
8 1000 1011 1110 1100
9 1001 1100 1111 1101
10 1111
11 PONDERACION NO TIENE PONDERACION 1110
12 8-4-2-1 PONDERACION 2-4-2-1 1010
13 1011
14 1001
15 1000

[Escribir texto] Página 2


[Escribir texto]

Código Hamming
Ir a la navegaciónIr a la búsqueda
En informática, el código de Hamming es un código detector y corrector de errores que lleva el
nombre de su inventor, Richard Hamming. En los datos codificados en Hamming se pueden detectar
errores en un bit y corregirlos, sin embargo no se distingue entre errores de dos bits y de un bit (para lo
que se usa Hamming extendido). Esto representa una mejora respecto a los códigos con bit de
paridad, que pueden detectar errores en sólo un bit, pero no pueden corregirlo.

Índice

 1Códigos pre-Hamming
o 1.1Paridad
o 1.2Dos entre cinco
o 1.3Repetición
 2Códigos Hamming
o 2.1Hamming (7,4)
 3Ejemplo
 4Hamming Extendido

Códigos pre-Hamming[editar]
Antes de los códigos Hamming se utilizaron ciertos códigos detectores de error, como lo fueron el
código linteing, pero ninguno llegó a ser tan eficaz como los de Hamming. A continuación se describen
algunos de estos códigos.

Paridad[editar]
La paridad consiste en añadir un bit, denominado bit de paridad, que indique si el número de los bits de
valor 1 en los datos precedentes es par o impar. Si un solo bit cambiara por error en la transmisión, el
mensaje cambiará de paridad y el error se puede detectar (nótese que el bit donde se produzca el error
puede ser el mismo bit de paridad). La convención más común es que un valor de paridad 1 indica que
hay un número impar de unos en los datos, y un valor de paridad de 0 indica que hay un número par
de unos en los datos.

La comprobación de paridad no es muy robusta, dado que si cambia de forma uniforme un número par
de bits, el bit de paridad será válido y el error no será detectado. Se utiliza cuando se cumplen
simultáneamente dos condiciones: que la probabilidad de que falle un bit es baja y que las fallas de bits
son sucesos independientes. De esta forma la probabilidad de que fallen dos (o más) bits es muy baja,
por lo que cuando no detecta error es altamente probable que el código sea efectivamente correcto.
Cabe destacar que dichas condiciones se ajustan al caso de las memorias de las computadoras
modernas pero no ocurre lo mismo con los dispositivos de almacenamiento que guardan la información
en forma serial (un bit a continuación de otro) ni con los sistemas de transmisión de datos seriales ya
que en estos casos el hecho que falle un bit está vinculado, en forma no despreciable, a la falla de otro
adyacente.

[Escribir texto] Página 3


[Escribir texto]

Por otro lado, la paridad, aunque puede detectar que hay error, no indica en qué bit se cometió, si bien
la sobrecarga que produce este método es muy baja, desde un punto de vista computacional como de
espacio (1 solo bit). Los datos se deben desechar por entero y volverse a transmitir. En un medio
ruidoso, una transmisión correcta podría tardar mucho tiempo o incluso, en el peor de los casos, no
darse nunca.

Dos entre cinco[editar]


En los años 40, Bell utilizó un código algo más sofisticado conocido como dos-entre-cinco. Este código
se basa en que cada bloque de cinco bits (conocido como penta-bit) tuviera exactamente dos unos,
asegurando así que tenga una Distancia de Hamming igual a dos. De este modo, la computadora
podría detectar posibles errores cuando en su entrada no había exactamente dos unos en cada penta-
bit.

Este código seguía únicamente detectando errores por cambio en un solo bit; si en un mismo penta-
bit(cadena de 5 bit's) un 0 cambiaba a 1 y un 1 cambiaba a 0, la regla de dos-entre-cinco se seguía
cumpliendo y el error quedaba sin descubrir.

Repetición[editar]
Otro código utilizado, consistía en repetir cada bit de datos varias veces para asegurarse de que la
transmisión era correcta. Por ejemplo, si el bit de datos que se envía fuera un 1, un código de
repetición con n=3, enviaría "111". Si los tres bits recibidos no eran idénticos, había un error. En un
ambiente sin demasiado ruido, la mayoría de las veces solamente cambiaría un bit en cada paquete de
tres bits. Por lo tanto, datos del tipo 001, 010, y 100 se corresponden al bit 0, mientras que 110, 101, y
011 se corresponden con el bit 1. Un código con esta capacidad de reconstruir el mensaje original en
la presencia de errores se conoce como código corrector de errores.

Sin embargo, este código no puede reparar correctamente todos los errores. En nuestro ejemplo, si el
error en la transmisión provocara el cambio simultáneo de dos bits y el receptor recibiera "001", el
sistema detectaría el error, pero considerando que el bit original era 0, lo cual es incorrecto. Si se
aumenta el número de veces que se repite cada bit a cuatro (n=4), es posible detectar los errores en
dos bits pero obviamente no se podrán corregir; con cinco, es posible corregir errores de dos bits, pero
no lo podrá hacer en errores de tres bits.

Por otra parte, el código de la repetición es extremadamente ineficaz, pues reduce la velocidad de
transmisión por tres en nuestro ejemplo original y su eficacia cae drásticamente al aumentar el número
de veces que cada bit se repite para detectar y corregir más errores. El uso del código de bloques no
lineales para detección de errores no es muy implementado por lo tanto emplearemos el código de
errores lineales para la corrección de errores.

Códigos Hamming[editar]
Si se añaden junto al mensaje más bits detectores-correctores de error y si esos bits se pueden
ordenar de modo que diferentes bits de error producen diferentes resultados, entonces los bits
erróneos podrían ser identificados. En un conjunto de siete bits, hay sólo siete posibles errores de bit,
por lo que con tres bits de control de error se podría especificar, además de que ocurrió un error, en
qué bit fue.

Hamming estudió los esquemas de codificación existentes, incluido el de dos entre cinco, y generalizó
sus conclusiones. Para empezar, desarrolló una nomenclatura para describir el sistema, incluyendo el
número de los bits de datos y el de los bits detectores-correctores de error en un bloque. Por ejemplo,
la paridad incluye un solo bit para cualquier palabra de datos, así que las palabras del Código
ASCII que son de siete bits, Hamming las describía como un código (8.7), esto es, un total de 8 bits de
los cuales 7 son datos. con base a la anterior repetición, sería un código (3.1), siguiendo la misma
lógica. La relación de la información es el segundo número dividido por el primero, por nuestro ejemplo
de la repetición, 1/3.

[Escribir texto] Página 4


[Escribir texto]

Hamming también estudió los problemas que surgían al cambiar dos o más bits a la vez y describió
esto como "distancia" (ahora llamada distancia de Hamming en su honor). La paridad tiene una
distancia de 2, dado que cualquier error en dos bits no será detectado. La repetición (3.1)tiene una
distancia de 3, pues son necesarios el cambio simultáneo de tres bits para obtener otra palabra de
código. La repetición (4.1) (cada bit se repite cuatro veces) tiene una distancia de 4, así que el cambio
de dos bits en el mismo grupo quedará sin definir.

Hamming estaba interesado en solucionar simultáneamente dos problemas: aumentar la distancia


tanto como sea posible, a la vez que se aumentan al máximo los bits de información. Durante los años
40 desarrolló varios esquemas de codificación que mejoraban notablemente los códigos existentes. La
clave de todos sus sistemas era intercalar entre los bits de datos los de paridad.

Hamming (7,4)[editar]
Hoy, el código de Hamming se refiere al (7.4) que Hamming introdujo en 1950. El código de Hamming
agrega tres bits adicionales de comprobación por cada cuatro bits de datos del mensaje. El algoritmo
de Hamming (7.4) puede corregir cualquier error de un solo bit, pero cuando hay errores en más de un
bit, la palabra transmitida se confunde con otra con error en un solo bit, siendo corregida, pero de
forma incorrecta, es decir que la palabra que se corrige es otra distinta a la original, y el mensaje final
será incorrecto sin saberlo. Para poder detectar (aunque sin corregirlos) errores de dos bits, se debe
añadir un bit más, y el código se llama Hamming extendido. El procedimiento para esto se explica al
final. El algoritmo es el siguiente:

1. Todos los bits cuya posición es potencia de dos se utilizan como bits de paridad (posiciones 1, 2, 4,
8, 16, 32, 64, etc.).

2. Los bits del resto de posiciones son utilizados como bits de datos (posiciones 3, 5, 6, 7, 9, 10, 11,
12, 13, 14, 15, 17, etc.).

3. Cada bit de paridad se obtiene calculando la paridad de alguno de los bits de datos. La posición del
bit de paridad determina la secuencia de los bits que alternativamente comprueba y salta, a partir de
éste, tal y como se explica a continuación. Posición 1: salta 0, comprueba 1, salta 1, comprueba 1, etc.
Posición 2: salta 1, comprueba 2, salta 2, comprueba 2, etc. Posición 4: salta 3, comprueba 4, salta 4,
comprueba 4, etc. Posición 8: salta 7, comprueba 8, salta 8, comprueba 8, etc. Posición 16: salta 15,
comprueba 16, salta 16, comprueba 16, etc. Regla general para la posición n es: salta n-1 bits,
comprueba n bits, salta n bits, comprueba n bits... Y así sucesivamente. En otras palabras, el bit de
paridad de la posición comprueba los bits en las posiciones que tengan al bit k en su representación
binaria. Dicho a la inversa, el bit 4, chequea los bits 4, 5, 6, 7, al ser estos los de su representación
binaria: 4=100(2), 5=101(2), 6=110(2) y 7=111(2). Por el contrario, el mismo bit de paridad no
comprueba el bit 8, debido a que en su representación binaria el bit número 3 (=4) es igual a 0
(8=1000B). Así, por ejemplo, para los primeros términos se tiene: En la Posición 1 (2^0 = 1),
comprobaríamos los bits: 1, 3, 5, 7, 9, 11, 13... En la Posición 2 (2^1 = 2), los bits: 2, 3, 6, 7, 10, 11, 14,
15... En la Posición 4 (2^2 = 4), los bits: 4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23... En la Posición 8 (2^3
= 8) tendríamos: 8, 9, 10, 11, 12, 13, 14, 15, 24-31... Siguiendo el algoritmo hasta completar la nueva
cadena.

Ejemplo[editar]
Consideremos la palabra de datos de 7 bits "0110101". Para ver cómo se generan y utilizan los
códigos Hamming para detectar un error, observe las tablas siguientes. Se utiliza la d para indicar los
bits de datos y la p para los de paridad.

En primer lugar los bits de datos se insertan en las posiciones apropiadas y los bits de paridad
calculados en cada caso usando la paridad par.

p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7

[Escribir texto] Página 5


[Escribir texto]

Palabra de datos (sin paridad): 0 1 1 0 1 0 1

p1 1 0 1 0 1 1

p2 0 0 1 0 0 1

p3 0 1 1 0

p4 0 1 0 1

Palabra de datos (con paridad): 1 0 0 0 1 1 0 0 1 0 1

Cálculo de los bits de paridad en el código Hamming

La nueva palabra de datos (con los bits de paridad) es ahora "10001100101". Consideremos ahora
que el bit de la derecha, por error, cambia de 1 a 0. La nueva palabra de datos será ahora
"10001100100".

Sin errores

Prueba de Bit de
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7
paridad comprobación

Palabra de datos
1 0 0 0 1 1 0 0 1 0 1 1
recibida:

p1 1 0 1 0 1 1 Correcto 0

p2 0 0 1 0 0 1 Correcto 0

p3 0 1 1 0 Correcto 0

[Escribir texto] Página 6


[Escribir texto]

p4 0 1 0 1 Correcto 0

Comprobación de los bits de paridad (con primer bit de la derecha sin cambiar)

Con errores

Prueba de Bit de
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7
paridad comprobación

Palabra de datos
1 0 0 0 1 1 0 0 1 0 0 1
recibida:

p1 1 0 1 0 1 0 Error 1

p2 0 0 1 0 0 0 Error 1

p3 0 1 1 0 Correcto 0

p4 0 1 0 0 Error 1

Comprobación de los bits de paridad (con primer bit de la derecha cambiado)

Si se analiza en la tabla anterior la paridad que se debe obtener a la derecha tras la


llegada del mensaje sin errores debe ser siempre 0 (por cada fila), pero en el momento en
que ocurre un error esta paridad cambia a 1, de allí el nombre de la columna "prueba de
paridad 1". Se observa que en la fila en que el cambio no afectó la paridad es cero y llega
sin errores.

El paso final es evaluar los bits de paridad (recuerde que el fallo se encuentra en d7). El
valor entero que representan los bits de paridad es 11 (si no hubieran ocurrido errores este
valor seria 0), lo que significa que el bit décimo primero de la palabra de datos (bits de
paridad incluidos) es el erróneo y necesita ser cambiado.

p4 p3 p2 p1

[Escribir texto] Página 7


[Escribir texto]

Binario 1 0 1 1

Decimal 8 2 1 Σ = 11

Cambiando el bit undécimo primero 10001100100 se obtiene de nuevo 10001100101.


Eliminando los bits de patrón de la paridad no se tienen en cuenta los bits de paridad.
Si el error se produjera en uno de ellos, en la comprobación sólo se detectaría un
error, justo el correspondiente al bit de paridad causante del mismo.

Pasos a seguir para pasar un numeral de cualquier


base numérica a la forma estándar

IEEE 754 en simple precisión

1) Si el signo del numeral es positivo el primer bit, el bit de signo de la posición 31, es
cero (0) sino es uno (1).

2) Si el numeral no está en base binaria (base 2), pasarlo a la base binaria.

3) Normalizar el numeral binario obtenido.

4) Calcular el exponente de la siguiente forma:

a) Si el exponente E obtenido es positivo (≥ 0) calcular EXP = E + 127 ((( 2 n-1 ) – 1)


para n=8) y pasar EXP a binario.

b) Si el exponente E obtenido es negativo (< 0) calcular EXP = 127 - E y pasar EXP a


binario.

5) Al exponente obtenido colocarlo en los ocho (8) bits siguientes al de signo ( bits desde
la posición 30 a la 23 inclusive).

6) Colocar la mantisa obtenida del numeral binario normalizado ( recordar que el bit que
está a la izquierda de la coma decimal no se considera (bit fantasma)) en los veintitrés
(23) bits siguientes a los ocho bits del exponente ( bits desde la posición 22 a la 0
inclusive).

7) Armar un numeral hexadecimal de 8 cifras o dígitos con los 32 bits obtenidos


agrupados de a 4 bits.

[Escribir texto] Página 8


[Escribir texto]

Ejemplos: representar 387810 en la forma estándar IEEE 754 en simple


precisión:

1) El primer bit es cero (0) porque el numeral es positivo.

2) Pasamos el numeral decimal 3878 a binario (lo pasamos primero a hexadecimal


dividiendo por 16 y luego pasamos el numeral obtenido en base hexadecimal de
manera directa a binaria tomando paquetes de 4 símbolos binarios):

3878 | 16
67 242 | 16
38 82 15 | 16
6 2 15 0

el numeral decimal 387810 Ξ F2616 Ξ 1111 0010 01102

3) Normalizamos el numeral binario obtenido que queda:

1111 0010 01102 = 1,111 0010 0110 x 10 11

De esta notación expandida obtengo el valor del exponente E que es: E = 11

4) Calculo el exponente EXP a cargar en la representación IEEE 754 de la siguiente


forma: EXP = E + 127 = 11 + 127 = 138

Paso 138 a binario: 13810 Ξ 1000 10102 = EXP

5) 6) y 7) Armamos la representación de los 32 bits del IEEE 754 como sigue:

Cantidades representadas en el estándar IEEE754 en simple precis

1 bit para el signo (bit 31)


0 0 implica signo positivo y 1 implica signo negativo

[Escribir texto] Página 9


[Escribir texto]

8 bits para el exponente (bits 23 al 30)


0 0 0 0 0 0 0 0

23 bits para la mantisa (bits 0 al 22)


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Representación del Numeral decimal 3878

1 bit para el signo (bit 31)


0 signo positivo

8 bits para el exponente (bits 23 al 30) exponente 138 (127 + 11) = 1000 1010
1 0 0 0 1 0 1 0

23 bits para la mantisa (bits 0 al 22) mantisa = 1110 0100 110


1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Representamos los 32 bits en el sistema hexadecimal


0100 0101 0111 0010 0110 0000 0000 0000 45726000 (16)

3878 en base decimal ( 10 ) se representa como 45726000 (16)

[Escribir texto] Página 10


[Escribir texto]

Representación del Numero 574

1 bit para el signo (bit 31)


0 signo positivo

8 bits para el exponente (bits 23 al 30) exponente 136 (9 + 127) = 1000 1000
1 0 0 0 1 0 0 0

23 bits para la mantisa (bits 0 al 22) mantisa 574 = 0001 1111 0


0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Representamos los 32 bits en el sistema hexadecimal


0100 0100 0000 1111 1000 0000 0000 0000 440F8000 (16)

574 ( 10 ) se representa como 440F8000 (16)

Estándar IEEE 754


¿Cómo se escribe un número en el Estándar IEEE 754?
El estándar IEEE 754 ha sido definido por el Instituto de Ingenieros Eléctricos y Electrónicos
(Institute of Electrical and Electronics Engineers, IEEE) y establece dos formatos básicos para
representar a los números reales en la computadora digital: precisión simple y precisión doble.

Precisión Simple en el Estándar IEEE 754


En precisión simple, para escribir un número real se usan 32 bits (4 bytes): 1 bit para el signo (s)
del número, 23 bits para la mantisa (m) y 8 bits para el exponente (exp), que se distribuyen de la
siguiente forma:

[Escribir texto] Página 11


[Escribir texto]

Figura - Representación de un número real con precisión simple en el estándar IEEE 754.
El exponente se suele representar en Exceso a 2n-1-1, mientras que, para la mantisa, normalmente
se utiliza Signo Magnitud. Además, la mantisa se suele normalizar colocando la coma decimal a la
derecha del bit más significativo.

Ejemplo 1: Para escribir el número 101110,0101011101000011111000011111000100112 en el


estándar IEEE 754 con precisión simple, exponente en Exceso a 2n-1-1 y mantisa en Signo
Magnitud, primero hay que normalizarlo:
5
1,011100101011101000011111000011111000100112 x 2

El exponente, en Exceso a 2n-1-1, será:


8-1
510 + (2 - 1)10 = 510 + (27 - 1)10 = 510 + (128 - 1)10 = 13210 = 10000100EX. a 127

De la mantisa se cogen los bits 23 bits más significativos:

1,0111001010111010000111

El resto de bits no se pueden representar, ya que, no caben en la mantisa. Sin embargo, cuando la
mantisa se normaliza situando la coma decimal a la derecha del bit más significativo, dicho bit
siempre vale 1. Por tanto, se puede prescindir de él, y coger en su lugar un bit más de la mantisa.
De esta forma, la precisión del número representado es mayor. Así, los bits de la mantisa serán:

01110010101110100001111

Al bit omitido se le llama bit implícito. Por otra parte, el bit de signo vale 0, ya que, el número es
positivo. En consecuencia, el número se puede representar como:

Los programadores, para representar a los números reales en este formato, suelen utilizar el
Sistema Hexadecimal.

Así pues,

En este caso, los números no son exactamente iguales, ya que, con precisión simple no se han
podido representar todos los bits de la mantisa.

Ejemplo 2: Dado el número 3E400000CFL del estándar IEEE 754 con precisión simple,
exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implícito, para averiguar a qué
número representa en base 10, se pueden realizar los siguientes pasos:

1º) Convertir 3E40000016 a base 2:

[Escribir texto] Página 12


[Escribir texto]

2º) Obtener los bits del signo, de la mantisa y del exponente:

3º) Pasar el exponente a base 10:

011111002 - (28-1 - 1)10 = 12410 - (27 - 1)10 = 12410 - (128 - 1)10 = 12410 - 12710 = -3

4º) Escribir el número en notación científica. Para ello, la mantisa se debe escribir con el bit
implícito (1), seguido de la coma decimal (,) y de los bits de la mantisa
(10000000000000000000000), teniendo en cuenta que los ceros por la derecha se pueden
despreciar. Por otra parte, el número es positivo, ya que, el bit de signo es 0. Por tanto, el número
es:
-3
1,1 x 2

5º) Expresar el número en base 10. Para ello, hay dos formas de hacerlo, la primera es:
-3 -3 -4
1,1 x 2 = 0,00112 = ( 2 + 2 )10 = 0,12510 + 0,062510 = 0,187510

y la segunda:

1,1 x 2-3 = ( ( 20 + 2-1) x 2-3 )10 = ( ( 1 + 0,5) x 0,125 )10 = ( 1,5 x 0,125 )10 = 0,187510

Por tanto,

3E400000CFL (PRECISIÓN SIMPLE) = 1,1 x 2-3 = 0,00112 = 0,187510

Precisión Doble en el Estándar IEEE 754


Por otro lado, en precisión doble, para escribir un número real se emplean 64 bits (8 bytes): 1 bit
para el signo (s) del número, 52 bits para la mantisa (m) y 11 bits para el exponente (exp).

Figura - Representación de un número real con precisión doble en el estándar IEEE 754.
Ejemplo 3: Si se quiere escribir el número 19,562510 en el estándar IEEE 754 con precisión
n-1
doble, exponente en Exceso a 2 -1 y mantisa en Signo Magnitud con bit implícito, los pasos a
seguir son:

1º) Cambiar 19,562510 a base 2. Primero la parte entera:

y, a continuación, la parte fraccionaria:

[Escribir texto] Página 13


[Escribir texto]

De modo que,

19,562510 = 10011,10012

2º) Normalizar el número binario obtenido, colocando la coma decimal a la derecha del bit más
significativo:

10011,10012 = 1,00111001 x 24
n-1
3º) Escribir el exponente en Exceso a 2 -1:
11-1 10
410 + (2 - 1)10 = 410 + (2 - 1)10 = 410 + (1024 - 1)10 = 102710 = 10000000011EX. a 1023

4º) Establecer la mantisa utilizando bit implícito. Para ello, se cogen los ocho bits que están a la
derecha de la coma (00111001) y el resto de la mantisa se rellena con ceros:

0011100100000000000000000000000000000000000000000000

5º) Expresar el número en el estándar IEEE 754 con precisión doble. En este caso, hay que tener
en cuenta que el bit de signo vale 0, ya que, el número es positivo:

6º) Representar el número en hexadecimal:

De tal forma que,

19,562510 = 10011,10012 = 1,00111001 x 24 = 4033A00000000000CFL(PRECISIÓN DOBLE)

Casos especiales en el Estándar IEEE 754


Tanto en precisión doble como en precisión simple, existen algunos casos especiales que
dependen de los valores del signo, del exponente y de la mantisa:

Figura - Casos especiales en el estándar IEEE 754 con precisión simple o doble.
Los dos últimos casos merecen especial atención, ya que, cuando todos los bits del exponente son
ceros (00...0), esto quiere decir que no se está utilizando bit implícito. Si, además, la mantisa es
todo ceros (00...0), el número representado es el cero (0), pero si la mantisa es distinta de todo
ceros, el número que se está representando es muy pequeño, de forma que, el exponente valdrá -
126 ó -1022, dependiendo de si el número está escrito en precisión simple o doble,
respectivamente.

Ejemplo 4: Dado el número 805C0000CFL del estándar IEEE 754 con precisión simple,
exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implícito, para averiguar a qué
[Escribir texto] Página 14
[Escribir texto]

número representa en base 10, se pueden realizar los siguientes pasos:

1º) Convertir 805C000016 a base 2:

2º) Obtener los bits del signo, de la mantisa y del exponente:

3º) Al observar que todos los bits del exponente son ceros (00000000) y la mantisa es distinta de
todo ceros, se deduce que es un caso especial. Se está representado a un número muy pequeño
sin bit implícito y, por tanto, el exponente es -126.

4º) En notación exponencial, puesto que en este caso no se utiliza bit implícito, la mantisa se
escribe con un cero (0), seguido de la coma decimal (,) y de los bits de la mantisa
(10111000000000000000000). En cuanto al signo del número, es negativo, ya que, el bit de signo
es 1. Con todo ello, el número es:

-0,10111 x 2-126

5º) Expresar el número en base 10:

¿Cómo calcular el valor en base 10 de un número escrito en IEEE 754?


En las dos tablas siguientes se resumen los cálculos que hay que realizar para deducir el valor en
base 10 de un número escrito en el estándar IEEE 754 con precisión simple o doble.

Figura - Cálculo del valor en base 10 de un número escrito en IEEE 754 con precisión simple.

[Escribir texto] Página 15


[Escribir texto]

Figura - Cálculo del valor en base 10 de un número escrito en IEEE 754 con precisión doble.

Rangos de representación en el Estándar IEEE 754


Los rangos de representación en el estándar IEEE 754 con precisión simple y doble, exponente en
Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implícito, son los siguientes:

Figura - Rango de representación en el estándar IEEE 754 con precisión simple.

Figura - Rango de representación en el estándar IEEE 754 con precisión doble.


Ambos rangos de representación son discontinuos, es decir, no se pueden representar todos los
números reales que existen entre dos cualesquiera de ellos. Esto es debido a que entre dos
números reales cualesquiera siempre existen infinitos números, sin embargo, sólo se dispone de
un número determinado de bits para representar a los números reales. Por esta razón, en las
computadoras digitales no se pueden representar a todos los números reales. Por ejemplo, con
precisión simple, alrededor del número cero (0) existen infinitos números reales, mayores que -2-
126 -126
y menores que 2 , que no son representables. Gráficamente:

Figura - Números no representables en el estándar IEEE 754 con precisión simple.

[Escribir texto] Página 16

También podría gustarte