Download Informática y programación
Document related concepts
Transcript
Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería Química Curso 2010/2011 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Módulo 1. Fundamentos de Computadores 1 • • • • Tema 1. Introducción y conceptos básicos Tema 2. Representación de la información Tema 3. Hardware Tema 4. Software. Paquetes software aplicados a ingeniería Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 CONTENIDO 2 Recordemos nuevamente la definición de ordenador: “Computadora, computador u ordenador es una máquina capaz de aceptar unos datos de entrada, efectuar con ellos operaciones lógicas y aritméticas, y proporcionar la información resultante a través de un medio de salida; todo ello sin intervención de un operador humano y bajo el control de un programa de instrucciones previamente almacenado en la propia computadora.” Recordemos también el concepto de dato Los datos son conjuntos de símbolos utilizados para expresar o representar un valor numérico, un hecho, un objeto o una idea; en la forma adecuada para ser objeto de tratamiento. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Introducción 3 Los ordenadores aparecieron en primer lugar como máquinas para realizar cálculos (del latín calculus, que significa contar con piedras), para dicha tarea los humanos empleamos el sistema decimal que hace uso de diez símbolos. ¿Por qué el sistema decimal? Contando con los diez dedos: • La tecnología electrónica que utilizan los ordenadores sólo permite distinguir dos estados diferentes: encendido y apagado. • El sistema de numeración de dos estados o valores se denomina binario, y los dos dígitos que emplea son el 0 y el 1. Siendo el bit (binari digit) la unidad de información más elemental. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Introducción 4 La información en los ordenadores se almacena y procesa haciendo uso de la codificación basada en el sistema de numeración binario. Tanto en la entrada como en la salida de datos, se efectúan las transformaciones de código oportunas, codificación y decodificación respectivamente, para que la información sea comprendida por el usuario. Codificación: transformación de elementos de un conjunto en elementos de otro conjunto siguiendo un método determinado, de tal forma que posteriormente se pueda efectuar el proceso inverso de decodificación Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Introducción 5 Los ordenadores realizan las operaciones con información representada en forma digital, es decir que tienen valores discretos. Durante muchos años, las aplicaciones de la electrónica digital se limitaba a los sistemas informáticos. Hoy en día, la tecnología digital tiene aplicación en prácticamente todas las áreas. La información antes de ser procesada por un ordenador debe codificarse en términos comprensibles para la máquina, es decir, debe convertirse al formato binario, para obtener su código (un grupo de bits) correspondiente. Los códigos permiten representar: - números - símbolos - caracteres alfanuméricos - instrucciones - cualquier otro tipo de información Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Introducción 6 Por homogeneidad se utiliza un número fijo de bits para representar. Un byte es el número de bits necesarios para almacenar un carácter, y en general se asume que son 8 bits. La cantidad de memoria de un ordenador o de un dispositivo de almacenamiento se describe empleando múltiplos de 8. • • • • • • 1 Kilobyte (KB) = 210 Bytes = 1024 Bytes ≈ 103 bytes 1 Megabyte (MB) = 220 Bytes = 1024 Kilobytes ≈ 106 bytes 1 Gigabyte (GB) = 230 Bytes = 1024 Megabytes ≈ 109 bytes 1 Terabyte (TB) = 240 Bytes = 1024 Gigabytes ≈ 1012 bytes 1 Petabyte (PB) = 250 Bytes = 1024 Terabytes ≈ 1015 bytes Exabyte, Zettabyte, Yottabyte En el sistema métrico decimal un Kilómetro se corresponde con 1000 metros, se utiliza la potencia de 2 más próxima a esa cantidad. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Introducción 7 Todos estamos familiarizados con el sistema de numeración decimal: • • Lo utilizamos cotidianamente. Es un sistema de representación posicional, en concreto un sistema de numeración de base 10 Un sistema de numeración en base b se caracteriza por: • • • Disponer de un alfabeto con b símbolos o cifras. En el sistema de base 10 disponemos de 10 símbolos o cifras: S10={0,1,2,3,4,5,6,7,8,9} Todo número se expresa empleando un conjunto de dichas cifras donde el valor de cada cifra depende: • De sí misma, y • De la posición que ocupa Por ejemplo en el sistema de base 10 no representan el mismo número 986 que 869 aún cuando los símbolos utilizados son los mismos. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración 8 • Ocurre en el caso general que la interpretación de una cifra, c, es igual a una potencia de la base, b, en función de la posición. Para 986 y 869 se observa que no son iguales 986 = 9 * 102 + 8 * 101 + 6 * 100 869 = 8 * 102 + 6 * 101 + 9 * 100 • La regla se extiende para números no enteros 986,21 = 9 * 102 + 8 * 101 + 6 * 100 + 2 * 10-1 + 1 * 10-2 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración 9 Un ordenador utiliza en sistema binario natural, binario o de base 2, que consta de dos símbolos S2={0,1} Ejemplo: Para codificar 4 símbolos, necesitamos 2 bits. Símbolo a codificar Código binario 0 1 2 3 00 01 10 11 ¿Cuántos bits son necesarios para codificar m símbolos? n bits, de modo que 2n ≥m; n>=log2 número de caracteres para 4 símbolos necesitamos 22 2 bits para 256 símbolos necesitamos 28 8 bits para 257 símbolos necesitamos 29 9 bits para 512 símbolos necesitamos 210 10 bits Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: binario 10 La conversión de binario a decimal es sencilla siguiendo la regla vista anteriormente para el sistema decimal, es decir, multiplicamos la cifra por la potencia de la base en función de la posición de dicha cifra 01101)2 = 1 * 23 + 1 * 22 + 1 * 20 = 13)10 010101,011)2 = 1 * 24 + 1 * 22 + 1 * 20 + 1 * 2-2 + 1 * 2-3 = 21 + 1/22 + 1/23 = 21 + 0,25 + 0,125 = 21,375)10 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: binario 11 Para la conversión de decimal a binario debemos tratar por separado la parte entera (método de las divisiones) y la parte fraccionaria (método de las multiplicaciones) El equivalente binario a la parte entera se obtiene dividiendo por 2 y tomando los sucesivos restos y el último cociente. El último cociente se corresponde al bit más significativo (MSB), y el primer resto al menos significativo (LSB) • 13 2 1 6 2 0 3 2 1 1 13)10 = 1101)2 116 2 0 58 2 0 29 2 1 14 2 0 7 2 1 3 2 1 1 116)10 = 1110100)2 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: binario 12 • La parte fraccionaria del número binario se obtiene multiplicando por dos sucesivamente, si no resulta nulo, la parte fraccionaria del número decimal. El número binario se forma con las partes enteras que se van obteniendo. Puede dar lugar a un número largo o incluso infinito de cifras binarias, por lo que si el número de bits para la parte fraccionaria estuviera limitado podría existir error de truncamiento. 0,1875)10 0,1875 x2 0,375 x2 0,75 x2 0,5 x2 0,3750 0,750 1,50 1,0 0,1875)10 = 0,0011)2 De esta forma para un número con parte entera (supongamos 116 de la transparencia anterior) y fraccionaria 116,1875)10 = 1110100,0011)2 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: binario 13 Ejercicios • • Binario a decimal • 11001 • 01110 • 100111 • 0,10010 • 101101,11 • 110101001 • 10101,001 Decimal a binario • 869 • 34,1875 • 7463 • 142,34 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: binario 14 El ordenador hace además uso de otros dos códigos, empleados como intermedios • Hexadecimal, código de base 16 S16={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} • Octal, código de base 8 S8={0,1,2,3,4,5,6,7} Decimal Binario Hexadecimal Octal 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 12 1100 C 14 13 1101 D 15 14 1110 E 16 15 1111 F 17 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: octal, hexadecimal 15 Para la conversión de octal (Base octal S8={0,1,2,3,4,5,6,7}) a decimal puede emplearse una técnica análoga a los números en base diez (métodos divisiones y multiplicaciones). • Conversión de octal a decimal Número: 432)8 Valor: 4 * 82 + 3 * 81 + 2 * 80 = 282)10 • Conversión de decimal a octal, métodos de las divisiones, (y nos quedamos con los restos) y multiplicaciones (nos quedamos con la parte entera) con divisor y multiplicador 8 Número: 234,1285)10 Valor: 352,10162540…)8 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: octal 16 Sin embargo es más sencillo aplicar un esquema aprovechando que la base es potencia de 2, b=8=23 • Conversión de binario a octal: Cada corresponde con un grupo de tres cifras inversa cada grupo de tres cifras binarias con un cifra octal. Podemos agrupar transformar mediante tabla de conversión. cifra octal se binarias, y a la se corresponde de 3 en 3 y 10100101,1101)2 010 100 101 , 110 100)2 2 4 5 , 6 4)8 • Conversión de octal a binario, utilizar tabla de conversión para cada cifra de forma similar Número: 3245,765)8 Valor: 011010100101,111110101)2 Binario Octal 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: octal 17 Para las conversiones entre hexadecimal (Base hexadecimal S16={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}): • Conversión de hexadecimal a decimal, sumar los pesos (2n) de las posiciones en las que hay un 1. Número: 857A)16 Valor: 8*163 + 5*162 + 7*161 + A*160 = 34170)10 • Conversión de decimal a hexadecimal, métodos de las divisiones y multiplicaciones con divisor y multiplicador 16 Número: 234)10 Valor: EA)16 Decimal Hexadecimal 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 A 11 B 12 C 13 D 14 E 15 F Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: hexadecimal 18 Para las conversiones del sistema hexadecimal (S16={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}) a binario • • Binario Hexadecimal 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 10100101,1101)2 1011 B 1100 C 1010 0101 , 1101)2 1101 D 1110 E A 5 , D)16 1111 F De nuevo es más sencillo aplicar un esquema aprovechando que la base es potencia de 2, b=16=24 Cada cifra hexadecimal se corresponde con un grupo de cuatro cifras binarias, y a la inversa cada grupo de cuatro cifras binarias se corresponde con un cifra hexadecimal. Podemos emplear la tabla en ambos sentidos. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: hexadecimal 19 Observando la tabla, puedes buscar reglas de formación que te eviten depender de memorizar: Decimal Octal 0 000 1 001 2 010 •La inmediatamente a su izquierda, la segunda, alterna de dos en dos. 3 011 4 100 •La tercera de cuatro en cuatro (22) 5 101 6 110 7 111 • La columna más a la derecha alterna ceros y unos. •La cuarta (para el código hexadecimal) de ocho en ocho (23) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: octal, hexadecimal 20 Para convertir entre octal y hexadecimal: • Conversión de hexadecimal a octal, se convierte cada cifra del número a binario y luego se transforma a octal agrupando las cifras de 3 en 3 mediante tabla de conversión Número: AF,16C16) en binario 1010 1111,0001 0110 1100)2 Agrupamos de 3 en 3: 010 101 111,000 101 101 100 Valor: 257,0554)8 • Conversión de octal a hexadecimal, se utiliza también la transformación intermedia en base 2. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: octal, hexadecimal Número: 257,0554)8 en binario 010 101 111,000 101 101 100)2 Agrupamos de 4 en 4: 1010 1111,0001 0110 1100 Valor: AF,16C)16 21 Ejercicios Octal a binario • 2067 • 14267 • Hexadecimal a binario • 2D5E • Octal a decimal • 3261 • Hexadecimal a decimal • A912,C • Binario a octal y hexadecimal • 11001 • 110101001 • Convierte a las otras bases • 1010110101)2 y 10101,11001)2 • 376,765)10 • 5AC3)16 y F743)16 • 0523)8 y 6455)8 • Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: octal, hexadecimal 22 Operaciones aritméticas en código binario. Las tablas de sumar y restar son: a b a+b 0 0 0 0 1 1 1 0 1 1 1 0 y me llevo 1 a b a-b 0 0 0 0 1 1 y debo 1 1 0 1 1 1 0 110101 +101001 1011110 110101 -101001 001100 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 23 Cuando la suma de dos dígitos excede los símbolos numéricos disponibles en la notación, se lleva un 1 (acarreo) a la posición de dígito inmediatamente superior. 1 1 1 1 1010 +101 101010 +001001 00111001 = 57 +00100011 = 53 1111 110011 01011100 = 92 11 1 11 1 1111 +111 10111000 = 184)10 +00111011 = 59)10 10110 11110011 = 243)10 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 24 Para realizar la resta se puede utilizar la tabla de la suma contando hacia atrás (descontando). Cuando la resta de dos dígitos excede (por debajo) los símbolos numéricos disponibles en la notación, se realiza un pedido o deuda de 1 a la posición de dígito inmediatamente superior. 1 110101 -101001 001100 1 11 1100011 -101001 0111010 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 25 Otra técnica eficiente para realizar sustracciones consiste en sumar al minuendo el complemento a 1 del sustraendo. El complemento a 1 de un número N, es el número que resulta de restar cada una de las cifras de N a la base menos uno del sistema de numeración que se esté utilizando. Es equivalente a intercambiar unos y ceros, así el complemento a 1 de 1011 es 0100. Podemos restar dos números sumando al minuendo el complemento a 1 del sustraendo. Si hubiera una cifra que se arrastra del resultado se descarta y se sumaría al resultado así obtenido. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 26 Veamos un ejemplo: 1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el sustraendo con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar por la coma) 2. Se halla el complemento del sustraendo, restando este valor del máximo valor binario con la misma longitud del minuendo, cambiar 0 por 1 y 1 por 0. 3. Se suma el minuendo al complemento del sustraendo 4. Se elimina el 1, acarreo, de la izquierda y se suma con el dígito más a la derecha del resultado, sin importar la coma decimal. 100011.101 -10101.000 minuendo sustraendo 111111.111 -010101.000 101010.111 complemento 100011.101 +101010.111 1)001110.100 001110.100 + 1 001110.101 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 27 resultado • Las comprobaciones pueden realizarse convirtiendo a decimal las cifras del minuendo y del sustraendo y realizando la resta. • Otro modo de controlar el resultado es sumar el resultado al sustraendo, debiendo obtenerse el minuendo 100011.101 -10101.000 1110.101 1110.101 +10101.000 100011.101 = 35.625)10 = 21)10 = 14.625)10 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 28 Las tablas de multiplicar y dividir en binario a b axb 0 0 0 0 1 0 1 0 0 1 1 1 a b a/b 0 0 indeterminado 0 1 0 1 0 infinito 1 1 1 110101 x 10 000000 110101 1101010 110101 - 101 1010,1… 00110 - 101 00110 - 101 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 0101 0001 … 29 Operaciones aritméticas en código octal: Tabla de sumar. + 0 1 2 3 4 5 6 7 0 1 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 10 1 + 1 2 2 3 4 5 6 7 10 11 3 3 4 5 6 7 10 11 12 4 4 5 6 7 10 11 12 13 5 5 6 7 10 11 12 13 14 6 6 7 10 11 12 13 14 15 1 4 7 3 1 5 7 6 2 0 3 0 3 7 7 10 11 12 13 14 15 16 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 30 Operaciones aritméticas en código hexadecimal: Tabla de sumar. + 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A A B B C C D D E E F F 10 2 2 3 4 5 6 7 8 9 A B C D E F 10 11 3 3 4 5 6 7 8 9 A B C D E F 10 11 12 4 4 5 6 7 8 9 A B C D E F 10 11 12 13 5 5 6 7 8 9 A B C D E F 10 11 12 13 14 6 6 7 8 9 A B C D E F 10 11 12 13 14 15 7 7 8 9 A B C D E F 10 11 12 13 14 15 16 8 8 9 A B C D E F 10 11 12 13 14 15 16 17 9 9 A B C D E F 10 11 12 13 14 15 16 17 18 A A B C D E F 10 11 12 13 14 15 16 17 18 19 11 B B C D E F 10 11 12 13 14 15 16 17 18 19 1A C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 1 11 6AE +1FA 9654 = 38484 +4528 = 17704 8F97.F00 +D44C.F9E 8A8 DB7C = 56188 163E4.E9E 31 Suma en código octal y hexadecimal. Una manera sencilla de realizar la suma en octal y hexadecimal es usando el método del reloj. Consiste en ordenar todos los símbolos en un círculo, de menor a mayor como en un reloj. Para realizar la suma se procede de la siguiente manera: 1. Posicionarse en el lugar correspondiente al primer sumando. 2. Desplazarse en el sentido de las agujas del reloj, avanzando tantas posiciones como lo indique el segundo sumando. 3. El resultado de la suma será la última posición a la que se llegue. 4. Cuando al sumar se supere el valor del último dígito del sistema de numeración, se produce un acarreo y debe añadirse una unidad a la posición inmediata superior. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 32 Suma en código hexadecimal. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 33 La resta en código octal (en hexadecimal es análoga) podemos aplicar la técnica del complemento 6204,02 - 5173 Minuendo Sustraendo 1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el sustraendo con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar por la coma) 2. Se halla el complemento del sustraendo, restando este valor del máximo valor octal con la misma longitud del minuendo 3. Se suma el minuendo al complemento del sustraendo 4. Se elimina el posible acarreo de la izquierda, sumándose al dígito más a la derecha, sin importar la coma decimal. 7777,77 - 5173,00 2604,77 Complemento 6204,02 + 2604,77 11011,01 + 1 1011,02 resultado Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 34 La resta hexadecimal sigue las mismas reglas que la resta decimal y binaria, con la salvedad que un pedido de 1 en la notación hexadecimal representa el número decimal 16. Usando el método del reloj se procede de la siguiente manera: 1. Posicionarse en el símbolo correspondiente al minuendo 2. Desplazarse en el sentido contrario a las agujas del reloj la cantidad de veces indicada por el sustraendo. 3. El resultado de la resta será la última posición a la que se llegue. 4. Cuando al restar se llega a un valor inferior a 0, se realiza un pedido y se debe restar una unidad a la posición inmediata superior. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 35 Sistemas de numeración: aritmética Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Resta en código hexadecimal. 36 Ejercicios • Operaciones aritméticas • 1110101)2 + 1010010)2 • 1110101)2 - 1010010)2 • 1110101)2 * 101)2 • 1110101)2 / 10)2 • 456)8 + 22)8 • 98)16 + 7)16 • 76)8 – 32)8 • 22)10 + 1001)2 + 32)8 + FF)16 • El complemento a 1 del número binario es: 0101 0111 1011. ¿Cuál es el número expresado en hexadecimal? • Convierte los números 239)10 y 37)10 a código binario, octal y hexadecimal. Posteriormente realiza la suma y la resta de los mismos en código binario. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Sistemas de numeración: aritmética 37 Conocidos los internos códigos que emplea un ordenador, es interesante describir el modo en que distintas entidades u objetos se codifican empleando dichos códigos. Las entidades que consideraremos brevemente serán: Texto o Alfanuméricos ASCII Unicode Sonidos Imágenes Mapa de bits Vectorial Valores numéricos BCD Coma fija Decimal desempaquetado Decimal empaquetado Binario puro Signo y módulo Complemento a uno Complemento a dos Coma flotante Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos 38 Los principales caracteres alfanuméricos utilizados son: • • • • • Alfabéticos: A, B, C, D, E,..., X ,Y, Z, a, b, c, d,..., x, y, z Numéricos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Especiales: ) ( , * / ; : + Ñ ñ = ! ? . " & > # < ] Ç [ SP De control: Por ejemplo el fin de línea Gráficos: ♣♦♥♠αβ⌠⌡∑ Los códigos de texto son la traducción de estos caracteres a conjuntos de bits. El número de bits necesario, n siendo un valor entero, depende del número de caracteres distintos que se desea se puedan representar. Con dos bits podemos representar 4 caracteres, con 8 256, etc. n>=log2 número de caracteres Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: alfanuméricos 39 El código más frecuente utiliza 7 bits y se conoce como ASCII (AmericanS tandard Code for Information Interchange). El código ASCII surgió originalmente como estandarización en 7 bits de varias codificaciones especiales y luego se extendió a una codificación de 8 bits. Se usa especialmente para la transmisión de datos y ha sido adoptado actualmente por la gran mayoría de los fabricantes de teclados. Utiliza únicamente 7 bits para la representación de los datos y están almacenados justificados por la derecha dentro de un campo estándar de 8 bits. El octavo bit se utiliza para la paridad de los anteriores. Unicode (16 bits): Moderno, desarrollado como estándar. Es una ampliación del código ASCII de 8 bits para poder codificar distintos juegos de caracteres (latino, griego, árabe, kanji, cirílico, etc…) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: alfanuméricos 40 Existen ampliaciones para incorporar caracteres de distintas lenguas. Pero no son suficientes para considerar también caracteres no latinos, por ello ha surgido Unicode que con 16 bits representa 65536 caracteres. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: alfanuméricos 41 Valores numéricos reales • Los valores numéricos se transmiten a través de las unidades E/S como alfanuméricos. • La representación alfanumérica no es válida para operar. • Antes de operar se transforman a su correspondiente valor en base 2 • Hay muchas maneras de representar datos numéricos en forma binaria. Directamente el número en base 2, denominada representación binaria directa. • Otras codificaciones: BCD, coma fija, coma flotante Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 42 BCD: Codifica los números decimales dígito a dígito. A esta codificación, que requiere 4 bits por cada dígito decimal, se le llama codificación BCD (Binary Coded Decimal). Se usa codificación ponderada, en la cual, se le dan a los bits, de izquierda a derecha, los pesos 8-4-2-1, respectivamente. Como estos pesos son precisamente los valores de posición en el sistema binario, un dígito decimal está codificado como su representación binaria, según la tabla. Ejemplo: El número 469)10 0100 0110 1001 BCD 4 6 9 111010101)2 Binaria directa (3 bits menos) Binario BCD 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 43 Coma Fija: La computadora dispone de un número finito de bits (llamado palabra) para la representación interna de los datos, lo que hace que los números reales sufran un determinado truncamiento en su parte decimal. El tamaño de la palabra depende del ordenador que se utilice y se corresponde con la cantidad de bits que es capaz de transferir en una operación de E/S. • La representación en coma fija recibe su nombre de la posición en que se supone situado el punto decimal, que es una posición fija. Actualmente esta representación se utiliza sólo para números enteros suponiendo que la coma decimal fija figura implícitamente a la derecha de los dígitos. • Existen tres formas de representar números en coma fija. • Decimal desempaquetado, • decimal empaquetado, y • binario puro. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 44 Decimal desempaquetado: Un número se almacena con un byte para cada cifra. Cada byte lleva en su cuarteto de la izquierda (denominado bits de zona) cuatro unos (F en hexadecimal) y en el de la derecha (bits de dígitos) la cifra en BCD. El cuarteto de la izquierda de la última cifra representa el signo, conteniendo 1100 (C en hexadecimal) para el (+), y 1101 (D en hexadecimal) para el (-). Ejemplo: 1992)10 1111 0001 1111 1001 1111 1001 1100 0010 F1 F9 F9 C2 - 1992)10 1111 0001 1111 1001 1111 1001 1101 0010 F1 F9 F9 D2 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 45 Decimal empaquetado: En este sistema se representa cada dígito en un cuarteto (sin bits de zona), salvo el primero por la derecha, que lleva el signo con los mismos valores que antes, conteniendo 1100 (C en hexadecimal) para el (+), y 1101 (D en hexadecimal) para el (-). Ejemplo: 199210) 0000 0001 1001 1001 0010 1100 0 1 -199210) 9 9 2 C 0000 0001 1001 1001 0010 1101 0 1 9 9 2 D Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 46 Binario puro: El número se representa en una palabra, utilizando el bit de más a la izquierda para representar el signo (0 para el + y 1 para el -). Para los números positivos, el resto de los bits (N-1) representan el módulo del número. El rango de representación, para N dígitos es de: • -2N-1 + 1 ≤ X ≤ 2N-1 – 1 • Excepto en el Complemento a dos que es de: • -2N-1 ≤ X ≤ 2N-1 – 1 • Los números negativos varían en su representación según los 3 métodos siguientes • Módulo y signo (MS) • Complemento a uno (C1) • Complemento a dos (C2) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 47 Módulo y signo (MS): El resto de los (N-1) bits representan el módulo del número, tanto de los positivos como de los negativos. Ejemplo: 10)10 0 0001010 + módulo -10)10 1 0001010 - módulo Complemento a uno (C1): El negativo de un número se obtiene complementando todos sus dígitos (cambiando ceros por unos y viceversa) incluido el bit de signo. Ejemplo: 10)10 0 0001010 + módulo -10)10 1 1110101 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos - módulo 48 Complemento a dos (C2): El negativo de un número se obtiene en dos pasos: 1. Se complementa el número positivo en todos sus bits incluido el bit de signo (se realiza el C1 del número) 2. Al resultado obtenido en el paso anterior se le suma 1 (en binario) despreciando el último acarreo, si existe Ejemplo: 10)10 0 0001010 + módulo -10)10 1 1110101 C1 + 1 1 1110110 Su principal inconveniente es el rango de representación asimétrico. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 49 Coma Flotante: Para representar dentro de los ordenadores números muy grandes o muy pequeños, se usa la notación científica o exponencial matemática: Número = mantisa · Base exponente En notación científica estándar, los números en base 10 se expresan en la forma N = ± m ·B± e = ± m · 10± e Ejemplos: -246,36 =-2,4636 · B+2 = -2,4636 · 102 82000000000 = 8,2 · B+10 = 8,2 · 1010 0,00003 = 3,0 · B-5 = 3 · 10-5 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 50 En notación exponencial, un número tiene infinitas representaciones, ya que siempre es posible correr k lugares la coma a la izquierda (o derecha), simultáneamente se incrementa (o decrementa) el exponente en un valor k, sin que cambie el valor del número representado. 13257.3285 = 13257.3285·100 = 1.32573285·104= 0.132573285·105= 132573285·10-4= 13257328500·10-6= … Se toma como estándar la representación denominada normalizada, que consiste en que la mantisa no tiene parte entera y el primer dígito a la derecha del punto decimal es significativo (distinto de cero), salvo en la representación del número 0. 728.3 = 7283 · 10-1 = 728.3 · 100 = 72.83 · 101 = 7.283 · 102 = 0.7283 · 103 notación normalizada Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 51 Existen muchas formas de representación en coma flotante, según la longitud de la palabra del ordenador, el número de dígitos reservados para la mantisa y el exponente (MS, C1 ó C2), etc. La representación en coma flotante la determina el fabricante, siendo la definición más utilizada la normalización IEEE 754 Esta representación asume la base 2, B=2, siendo necesario almacenar sólo el signo (1 bit), la mantisa m (nm bits) y el exponente o E (ne bits) N = ±m · 2E Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 52 Estos bits se reparten en los disponibles para representar el número. La precisión simple (hay doble) asume 32 bits, 1 bit de signo, 8 de exponente (exponente desplazado 127) y el resto, 23 bits, de mantisa. Para simple/doble precisión (ordenador con 32/64 bits = 4/8 bytes) • primeros 23/52 bits mantisa normalizada • Bits del 23 al 30/52 al 62 exponente desplazado • Bit 31/63 para el signo (0 positivo, 1 negativo) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos • Base 2 • El 0 se representa con todos los bits a 0 53 • • El bit de signo, s en la figura, es 0 para valores positivos y 1 para los negativos El exponente, e en la figura, no tiene bit de signo, pero para permitir exponentes positivos y negativos, se almacena desplazado (p.e. en precisión simple, donde donde ne=8, se le suma siempre 2ne-1 -1 = 127) de tal forma que no sea necesario un bit de signo. Para obtener el exponente real, E, basta con restarle el valor de desplazamiento e=S+E= 2ne-1 -1 + E => E = e – (2ne-1 -1) • El exponente se ajusta de modo que sólo exista una cifra no nula a la izquierda de la coma, y que sea 1 (para representar el 0 todos los bits de e y m son 0) N = 1101.01 = 1.10101·23 • m ←10101 e ←11 Los números con decimales suelen requerir redondeo al no ser representables en general con un número finito de bits Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 54 Representa 67,25 con la normalización IEEE 754 en precisión simple Transformemos primero a binario de forma separada la parte real y la fraccionaria 67 2 1 33 2 1 16 2 0 8 2 0 4 2 0 2 2 0 1 67,25)10 = 1000011,01)2 0,25 x2 0, 5 x2 0, 50 1, 0 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 55 Representa 67,25 con la normalización IEEE 754 en precisión simple (cont.) Sabemos que el número binario es 1000011,01)2 Desplazamos la coma hasta tener sólo una cifra a su izquierda N = 1000011,01 = 1,00001101 ·26 La normalización IEEE 754 con precisión simple utiliza 32 bits, siendo 1 bit de signo, 8 de exponente y 23 de mantisa. s=0 m = 00001101000000000000000 e = 2ne-1-1+E = 27-1+6 = 133 = 10000101 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 56 Ejercicios • La representación de un número entero en el interior de un computador en código BCD es 1001 0111. ¿Cuál es su valor decimal? • Representar los números reales en el formato IEEE 754 • 126,12)10 • 564,17)10 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos: valores numéricos 57 Sonido •La señal analógica se capta por medio de un micrófono. •Tras ajustarla a un rango se digitaliza realizando un muestreo a determinada frecuencia. •Por ejemplo a 20Hz tomaría muestras o medidas 20 veces por segundo. •La frecuencia de muestreo es importante de cara a registrar correctamente ondas sonoras de determinada frecuencia. •Cada muestra se corresponde a un número de bits, que caracterizan la precisión de la digitalización, es decir, el rango de valores disponibles para representar el valor medido en un instante. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos 58 Imágenes Hay dos esquemas principales para la representación de imágenes en un ordenador: • Mapas de bits: Se considera la imagen dividida en una rejilla rectangular de celdas que se conocen como píxeles (formatos jpeg, bmp, gif, etc.). • Vectoriales: se describe como una colección de objetos o primitivas tales como líneas, polígonos y textos con sus respectivos atributos o detalles. (formato p.e. CorelDraw) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos 59 Mapas de bits • Dividida en una rejilla rectangular de píxeles. • Cada píxel representa un valor discreto correspondiente a una señal analógica registrada por el periférico. • Se almacena en memoria de forma sucesiva empleando un número de bits para representar el valor de cada píxel. • Su calidad depende de la resolución (número de píxeles de la imagen) y del número de bits por píxel. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos 60 Mapas de bits La digitalización de una señal analógica provoca pérdida de información, sin embargo consideramos un sistema digital como muy preciso ¿por qué?. Digital versus analógico (RGB o 24 bits, 6, 4 y 3 bits) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos 61 Vectorial • Descrita como una colección de objetos tales como líneas, polígonos y textos con atributos o detalles (grosor, color, etc.) modelables por medio de vectores y ecuaciones matemáticas que determinan tanto su forma como su posición dentro de la imagen. • Para visualizar una imagen, un programa evalúa las ecuaciones y escala los vectores generando la imagen concreta a ver. • Ocupan poco espacio • Sólo adecuadas para dibujos geométricos Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Representación de datos 62 • Fundamentos de Informática y Programación para Ingeniería. Ejercicios Resueltos para C y Matlab. Modesto Castrillón et al, Paraninfo, 2011. • Capítulo 3 de Introducción a la informática, A. Prieto Espinosa, A. Lloris Ruiz, J.C. Torres Cantero, McGraw-Hill, Madrid (1989) • El codi digital (El código digital - Digital code) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Bibliografía 63