2.3.
Representación de datos numéricos
Dos posibilidades de representación:
• Como secuencias de caracteres no adecuada para cálculos
matemáticos.
Números Representación en ASCII Resultado
(caracteres) en ASCII
255 0011 0010 0011 0101 0011 0101
42 0011 0100 0011 0010
Suma 0011 0010 0110 1001 0110 0111 2ig
• De alguna forma basada en los sistemas de numeración matemáticos.
Números Representación en base 2 Resultado decimal
255 1111 1111
42 0010 1010
Suma 1 0010 1001 297
Cálculos matemáticos correctos
ObjetivoMenor nº de bits para representar el número
número número
Transformaciones: (cadena de (representación
caracteres) binaria)
Tipos de datos numéricos y representaciones diferentes:
Tipo de dato numérico Representación
Enteros Binaria • Enteros sin signo
• Enteros con signo:
• Signo y magnitud
• Complemento a 1
• Complemento a 2
• Sesgada (en exceso)
BCD • Natural
• Aiken
• Exceso en 3
Reales Mantisa y exponente
1
n = 8 bits
Datos enteros: Binario Decimal
• Representación binaria: 0000 0000 0
• Enteros sin signo: 0000 0001 1
0000 0010 2
n bits 2n números
..... .....
Rango: [0,2n-1] 1111 1111 255 n = 8 bits
• Enteros con signo: Binario Decimal
• Enteros con signo y magnitud: 1111 1111 -127
bit mas significativo: .... ....
signo (0=positivo, 1=negativo) 0111 1111 +127
2 representaciones para
resto de bits: valor absoluto número el cero
Rango: [-(2n-1-1), 2n-1-1]
• Enteros en complemento a 1:
Primer bit: signo (0=positivo, 1=negativo)
Resto de bits: número positivo: valor absoluto del número
número negativo: complemento a 1 de valor absoluto
Rango: [-(2n-1-1), 2n-1-1]
• Enteros en complemento a 2: (la más usual)
Primer bit: signo (0=positivo, 1=negativo)
Resto de bits: número positivo: valor absoluto del número
número negativo: complemento a 2 de valor absoluto
Rango: [-2n-1, 2n-1-1]
• Representación sesgada (desplazada o en exceso):
Un número N se representa como N+S con S=2n-1
Rango de valores: [-2n-1, 2n-1-1]
Nº decimal Tipo de representación (n=4 bits)
Signo y magnitud Complemento a 1 Complemento a 2 Sesgado
+7 0111 0111 0111 1111 15
+6 0110 0110 0110 1110 14
+5 0101 0101 0101 1101 13
+4 0100 0100 0100 1100 12
+3 0011 0011 0011 1011 11
+2 0010 0010 0010 1010 10
+1 0001 0001 0001 1001 9
+0 0000 0000 0000 1000 8
-0 1000 1111
-1 1001 1110 1111 0111 7
-2 1010 1101 1110 0110 6
-3 1011 1100 1101 0101 5
-4 1100 1011 1100 0100 4
-5 1101 1010 1011 0011 3
-6 1110 1001 1010 0010 2
-7 1111 1000 1001 0001 1
-8 1000 0000 0
2
Problemas de los enteros Desbordamiento: el resultado de una operación se
sale de los límites de representación (depende de la longitud de la palabra y del
tipo de representación)
• Representación BCD (Decimal Codificado en Binario):
4 bits para representar las cifras: 0 1 2 3 4 5 6 7 8 9
1 byte 2 dígitos decimales
Ejemplo: 9 8 3 2 5
1001 1000 0011 0010 0101
Ejercicio 1.1.14 ¿Cuáles serán los números decimales enteros correspondientes
a los números siguientes: 10101110; 01111011; 10000000? Considerar las
siguientes representaciones:
• Sin signo.
• Signo y magnitud.
• Complemento a 1.
• Complemento a 2.
• Sesgada.
• BCD.
Soluciones:
1010 1110 0111 1011 1000 0000
Sin signo 174 123 128
Signo y magnitud -46 +123 -0
Complemento a 1 -81 +123 -127
Complemento a 2 -82 +123 -128
Desplazada 46 -5 0
BCD No válida No válida 80
Datos reales: (normalización IEEE 754) N=M*BE
Notación exponencial, científica o en coma flotante: B: base
Ejemplo: E: exponente
13257.3285 = 1.32573285 * 104 = 132573285 * 10-4 =... M: mantisa
Representación normalizada: N s e m
bits necesarios: n = 1 + ne + nm
• Base del exponente predeterminada (B=2)
3
• s: campo del signo: 0=positivo, 1=negativo
• e: campo del exponente: entero sesgado con S=2ne-1-1
e = S + E = 2ne-1 - 1 + E
• m: campo de la mantisa número normalizado: el 1 más significativo
de la mantisa se encuentra en la posición 0 multiplicar/dividir por 2
para desplazar el punto decimal. Ejemplos de normalización:
N1 = 1001.1100110 * 2-5 = 1.0011100110 * 2-2
N2 = 0.000001101101 * 234 = 1.1011101 * 228
Almacenamiento encapsulado almacenar solo la parte fraccionaria
de la mantisa (se ahorra 1 bit de espacio)
Ejemplo: n=16 bits ne=8 ¿N = (1001111100011110)representación interna?
signo = 1 número negativo S=127
exponente = (00111110)2 = (62)10 E = e – S = (-65)10
mantisa = (1,0011110)2 = 1 + 2-3 +2-4 + 2-5 + 2-6 = (1.234375)10
número = - M * 2E = -1.234375 * 2-65 = -3.345780142 * 10-20
Caso normal: (número normalizado)
• 0<e<2ne-1 S=2ne-1-1 E=e-S N=(-1)signo*2E*1.m
Casos especiales:
• e=0 m≠0 mantisa denormalizada S=2ne-1-2 E=e-S
N=(-1)signo*2-S*0.m
• e=0 m=0 N=0
• e=2ne-1 m=0 N=±∞ (INF)
m≠0 no es un número (NaN)
Problemas de los reales:
• Representación aproximada cálculos no exactos (redondeos)
• Precisión y valores límite:
Precisión
Simple Doble
n 32 64
ne 8 11
nm 23 52
38
Nmax 3.4028 * 10 1.7977 * 10308
Rango Nmin(Normalizado) 1.1755 * 10-38 2.2251 * 10-308
Nmin(Denormalizado) 1.4013 * 10-45 4.9407 * 10-324
desbordamiento agotamiento desbordamiento
N<0 N>0
-∞ +∞
-Nmax -Nmin Nmin
0 Nmax
4
IEEE-754 Simple precisión seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
1 8 23
e=25510(111111112) y m≠0 ±NaN
e=25510(111111112) y m=0 ±∞
0<e<25510 (-1)S*2(e-127)*1.m
e=010(000000002) y m≠0 (-1)S*2-126*0.m
e=010(000000002) y m=0 ±0
IEEE-754 Doble precisión seeeeeeeeeeemmmmmmm...mmmmmmmmmmmm
1 11 52
e=204710(111111111112) y m≠0 ±NaN
e=204710(111111111112) y m=0 ±∞
0<e<204710 (-1)S*2(e-1023)*1.m
e=010(000000000002) y m≠0 (-1)S*2-1022*0.m
e=010(000000000002) y m=0 ±0
Ejercicio 1.1.16 Suponiendo una computadora que utiliza el estándar IEEE
754, obtener las representaciones internas en simple precisión de los siguientes
números: 7; -7.5 * 2-140
Soluciones:
7 40E0 0000
-140
-7.5 * 2 8000 0F00
Ejercicio 1.1.17 Obtener los números reales máximos y mínimos (normalizados
y de-normalizados) representables en IEEE 754, doble precisión.
Soluciones:
Máximo: 1.7977 * 10308
Mínimo: Normalizado: 2.2251 * 10-308
De-normalizado: 4.9407 * 10-324