Representación de datos Yussef Farrán Leiva [email protected] referencias • J. Glenn Brookshear, Introducción a las ciencias de la computación, Addison-Wesley Iberoamericana, 1995. (algunas de las figuras mostradas han sido obtenidas del sitio web de Pearson) • Osvaldo Cairó, Metodología de la Programación, Algoritmos, Diagramas de Flujo y Programas, Tomo 1 Celdas de memoria ordenadas por dirección bit y byte • bit: binary digit - digito binario (0 – 1) • byte: agrupación de 8 bits Organización de una celda de memoria los símbolos del lenguaje • Letras: a, b, c, d, ……, z, A, B, ……, Z • Números decimales: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. • Símbolos especiales: > < , ; . : -_ [ ] @ $ % ! ¡ “ # & / \ ( ) = ¿ ? y otros. Representación de símbolos • ASCII: American Standard Code for Information Interchange • EBCDIC: Extended BCD for Interchange Code • (BCD: Binary Coded Decimal) Tabla ascii Extensión ascii Figure 1.13: The message “Hello.” in ASCII Tipos de datos • Forma como se interpretarán los patrones de bits que representan a los datos • y • las operaciones que pueden efectuarse con estos datos Tipos de datos • Fundamentales o primitivos – Caracteres o no numéricos – Números • Enteros: long, short, int • Reales: float, double – Boolean • Derivados o compuestos – Estructuras de datos • Internos: estáticos y dinámicos • Externos: archivos, bases de datos – Tipos de datos abstractos multimediales • Imágenes .bmp .gif .jpg • Sonidos .wav .mid .mp3 • Videos .avi .mpg . Proceso de digitalización De: http://www.std.org/russ/FileTypes.html • Digitalización – De sonidos – De imágenes fijas – De imágenes en movimiento • Sintetización – De sonidos • Volumen ocupado – (cantidad de bytes ocupados) – Para texto – Para imagen – Para video – Para sonido Datos numéricos • Enteros y reales, operaciones aritméticas • Enteros: pueden tener o no un signo 128 1835 -457 -23459 4385 • Reales: tienen una parte decimal o fraccionaria 7,5 438,23 34000,0 8576,7 Datos alfanuméricos • Operaciones de comparación • Carácter simple • Contiene un caracter letra o símbolo especial • a=‘e’ b=‘4’ c=‘c’ • Cadena (de caracteres) • Contiene varias caracteres letras o símbolos • d=‘numeros’ s=‘12345’ kod= ‘d34ut89’ • a= ‘$34^fg’ Desborde u overflow • Cantidad limitada de bits de cada patrón • Ejemplo: Patrón de 3 dígitos base 10 Patrón de 4 dígitos base 2 625 1010 +465 +1101 ------- ------- 1090 10111 090 0111 Notación complemento a dos sistema usual en procesadores actuales Fracciones en binario 1 0 0 1 0 1 1 x un octavo = 1/8 1 x 2-3 0 x un cuarto = 0 0 x 2-2 1 x un medio = 1/2 1 x 2-1 0 x uno = 0 0 x 20 0 x dos = 0 0 x 21 1 x cuatro = 4 1 x 22 Total: 4 5/8 i= n −1 ∑ i= − m aix2 i Almacenamiento de fracciones • Notación de punto flotante Fracciones ejemplo 1 00101011 0 0 1 0 1 0 1 1 : .1011 : : 010 (2) 10.11 0 => positivo 2 3/4 Fracciones ejemplo 2 11111100 1 1 1 1 1 1 0 0 : .1100 : : 111 (-1) .01100 1 => negativo -3/8 Errores en el redondeo Resultado 2 ½ Errores en la comunicación bit de paridad Paridad ajustada a “impar” rangos enteros largo signo menor mayor short Sin signo 0 65.535 Con signo -32.768 +32.767 sin signo 0 4.294.967.295 con signo -2.147.483.648 +2.147.483.647 long 2 bytes 4 bytes rangos flotante 4 bytes = 32 bits mantisa 24 bits exponente 8 bits 1 bit signo 23 bits valor 1 bit signo 7 bits valor Precisión: depende de la mantisa, mayor valor es 2 23-1 Rango, depende del exponente : 2-128 = 2.9385 · 10-39 y 2127 = 1.7014 · 1038 rangos Double float 8 byte = 64 bits mantisa 53 bits 1 para el signo y 52 para el valor exponente 11 bits 1 para el signo y 10 para el valor La precisión es : 252 = 4.503.599.627.370.496 (entre 15 y 16 cifras decimales equivalentes) El rango es de 21024 = 1.7977 · 10308 Nota: MatLab trabaja siempre en doble precisión o double float, de 64 bit