Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información TEMA 2 – CODIFICACIÓN Y REPRESENTACIÓN DE LA INFORMACIÓN: ÍNDICE 1. Conceptos previos. .......................................................................................................... 1 1.1.- Construcción de códigos ................................................................................................. 2 2. Codificación: ................................................................................................................... 3 2.1. Sistemas de numeración .............................................................................................. 3 Sistema binario. .................................................................................................................................3 Sistema Octal o base 8: .....................................................................................................................4 Hexadecimal o base 16 ......................................................................................................................5 Tabla resumen de métodos de conversión entre bases. .....................................................................6 2.2. Códigos alfanuméricos: ............................................................................................... 7 ASCII ( American Standard Code for Information Interchange) ......................................................7 Fieldata. .............................................................................................................................................8 BCD o Binary Coded Decimal. .........................................................................................................8 EBCDIC ( Extended Binary Coded Decimal Interchange Code)......................................................8 Unicode. ............................................................................................................................................8 3. 3.1. Representación de la información: .................................................................................. 9 Coma fija: .................................................................................................................... 9 Signo y Módulo. ................................................................................................................................9 Complemento a 1 (Ca1) ....................................................................................................................9 Complemento a 2 (Ca 2): ................................................................................................................10 3.2. Coma flotante. ........................................................................................................... 10 --------------- oOo --------------- 1. Conceptos previos. La ejecución de un programa implica realizar unos tratamientos según un conjunto ordenado de instrucciones sobre unos datos. Se presentan los problemas de cómo representar y registrar la información físicamente. La información se suministra al ordenador con un conjunto de símbolos y caracteres que nosotros entendemos, pero deben de sufrir un proceso interno de traducción para que lo entienda el ordenador. En el ordenador, la información, ya sean instrucciones o datos, se almacena en la memoria principal, se procesa en UAL y se transfiere en las diferentes unidades en formato binario. En éste tema, se explicará como se guarda físicamente la información, para lo que será necesario seguir unos métodos para su representación y codificación. Prof.: Justo Sáez Arenas [jsaez.com] 1 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información 1.1.- Construcción de códigos Un sistema digital utiliza información representada por magnitudes físicas que se limitan a tomar sólo unos determinados valores discretos conocidos como señales. En el sistema digital estos valores discretos se representan por 0 y 1 y generalmente se conocen como bit ( Binary digIT) que se define como la unidad mínima de información. Normalmente los bits no se almacenan individualmente, sino que forman grupos denominados palabras, siendo la longitud de palabra con la que trabaja un ordenador, la cantidad de bits que trata de forma conjunta. Mediante estos conjuntos de bits codificaremos la información. Una forma de codificar es asignar una correspondencia unívoca entre los símbolos a representar y la secuencia de bits que lo representa, de forma que cada uno de los símbolos tenga una y sólo una secuencia de bits asignada. Así por ejemplo queremos representar el conjunto de símbolos A = {a,b,c} con el grupo de bits B = {0,1}. Podríamos realizar una asignación como sigue: A B a b c 0 1 01 Pero ésta asignación pude dar lugar a diferentes representaciones. En al caso de tener una serie de bits como 011, puedo interpretarlo como abb o como ca. A a b c B 00 01 10 Normalmente solucionaríamos este problema obligando a que cada símbolo de A se represente con la misma cantidad de bits. En general, para codificar en binario un conjunto de n símbolos, será necesario un número de n bits de modo que se cumpla. Cantidad de bits >= log 2 n-símbolos Ejemplos: Si tenemos un sistema con tres tipos de señales diferentes y queremos representar once símbolos cuantos bits necesitamos. Tres puesto que 3 a la 3 son 27. Queremos representar 352 símbolos en un sistema binario, cuantos bits necesitamos. Nueve, 2 a la 9 son 512. La combinación de bits más utilizada es la 8 y recibe el nombre de byte. Prof.: Justo Sáez Arenas [jsaez.com] 2 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información 2. Codificación: 2.1. Sistemas de numeración Normalmente trabajamos con un sistema de numeración decimal pero existen otros. Así hemos visto que los ordenadores utilizan un sistema binario, aunque también pueden trabajar con otros sistemas que le resultan fáciles, como el octal o base 8 y el hexadecimal o base 16 que veremos a continuación. Existen varios sistemas de numeración, los más comunes, como el decimal, son sistemas posicionales, donde cada dígito tiene un peso concreto dependiendo de su posición. Hay otros sistemas no posicionales como por ejemplo la numeración romana. Los sistemas posicionales son aquellos en los que los valores de los números, no solo dependen de la cifra utilizada sino de su posición. En estos sistemas de numeración cada valor se obtiene a partir de la fórmula siguiente: n (digito)i * (base)i i n = nº de dígitos i = posición de 0 a n base = sistema de numeración La suma de todos los términos del sumatorio da lugar al número en base 10. Cuando hay parte decimal, se aplica la misma fórmula pero con potencia negativa. Sistema binario. Se corresponde naturalmente con el contenido de los registros del ordenador de modo que independientemente de su significado, la información se puede representar por un conjunto de dos valores. Esta información mínima representada con 1 o 0 es lo que conocemos como bit (binary digit). A partir de esta unidad elemental se manejan otras unidades superiores: 1 Byte = octeto = 8 bits 1 Kilobyte = 1024 Bytes 1 Megabyte = 1024 Kb 1 Gigabyte = 1024 Mb 1 Terabyte = 1024 Gb Para convertir un número de binario a decimal usamos la fórmula general para calcular cualquier número sabiendo que es un sistema posicional y sabiendo su base. Ejemplo: 1011101(2 = 1 * 26 + 0 * 25 + 1 * 24 + 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 + = 93 Para convertir un número decimal a binario se divide sucesiva/ el número por dos. El último cociente y los restos forman su representación en base dos. Si el número en base diez tiene parte decimal se va multiplicando la parte decimal por potencias de dos y las partes enteras resultantes forman el número binario. El proceso termina cuando la parte decimal es nula. Prof.: Justo Sáez Arenas [jsaez.com] 3 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información Ejemplos: Realizar la comprobación de que el número 93 en base diez es el número binario de antes. 93/2/2/2.......= 1011101 Pasar 315(10 a base (2 = 100111011 Convertir 0.625(10 a base (2 = 0.101 Pasar 332´661(10 a base(2 = 101001100´101 El sistema binario escrito se denomina código binario natural. En general un ordenador utiliza sistema más complicados que el binario dentro de estos el octal y el hexadecimal. Además para datos numéricos se utilizan otros formatos para almacenarlos de forma que se utilice mejor los recursos de la máquina, por ejemplo formatos de coma fija, formatos de coma flotante que se basan en la representación como Ca1(completo a1) y Ca2, se verán más adelante. Sistema Octal o base 8: Sistema de numeración con ocho símbolos diferentes que son:0,1,2,3,4,5,6,7. Este sistema se utiliza debido a la facilidad con que puede pasarse a binario para lo cual: De binario a octal: tomamos la cifra binaria y cogemos grupos de 3 dígitos empezando por la derecha. Pasamos cada grupo a octal y el conjunto de cifras obtenidas forman el grupo octal. Ejercicio: Pasar 10110001001011(2 a base (8 = 26113(8 De octal a binario: se coge cada cifra en base 8 y se cambia por su correspondiente número de bits. Ejercicio: Pasar 4375(8 a base (2 = 100011111101(2 De octal a decimal: utilizamos la forma general. Ejercicio: 4375´672(8 = 4*8...........................= 2301´862 De decimal a octal: Igual que pasar de decimal a binario con la diferencia que en lugar de dividir entre 2, se divide entre 8. Ejemplo: Pasar 372´395(10 a base (8 = 564´312 Prof.: Justo Sáez Arenas [jsaez.com] 4 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información Hexadecimal o base 16 Dec Hex.l 0 0 1 1 2 2 … … 9 9 10 A 11 B 12 C 13 D 14 E 15 F 16 10 17 11 18 12 19 13 … … 25 19 26 1A … … 30 1E 31 1F 32 20 Consta de 16 símbolos cogiendo desde 0 hasta 9 y continuando con las letras desde la A hasta la F así obtendríamos la siguiente tabla: Conversión de binario a hexadecimal: se hace grupos de 4 bits y se procede como en el octal. Ejemplo: Pasar 100010111111010´1001101 (2 a hexadecimal(16 = 45FA´95 De hexadecimal a binario: Se separan cada una de las cifras del hexadecimal y se pone su correspondiente binario utilizando cuatro cifras. Ejemplo Pasar A34´E2 (16 a base (2 = 101000110100´11100010 De hexadecimal a decimal: aplicando la forma general de los sistemas de numeración posionales. B7F (16 = 2943 (10 De decimal a hexadecimal: Se hacen divisiones entre 16. 4573´79 (10 = 11DD´CA3. Así podemos construirnos una tabla general de equivalencias como sigue: Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Prof.: Justo Sáez Arenas [jsaez.com] Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000 Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 5 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información Tabla resumen de métodos de conversión entre bases. A modo de resumen, en la siguiente tabla se indica el método a seguir para pasar de un sistema de numeración a otro. Decimal Binario Octal Hexadecimal Decimal ---- Div - Mult Div - Mult Binario Fórmula Gral. ---- Octal Fórmula Gral. Por Tabla ---- Hexadecimal Fórmula Gral. Por Tabla Por Tabla Div - Mult Grupos de 3 bits Grupos de 4 bits Por tabla ---- Donde: Formula Gral. = Fórmula general de numeración. Div -Mult = Divisiones sucesivas parte entera y multiplicaciones sucesivas la parte decimal. Grupo de 3 bits = del binario se cogen de 3 en 3 para pasarlos a octal. Grupo de 4 bits = del binario se cogen de 4 en 4 para pasarlos a hexadecimal. Por tabla = Según la tabla y si no se pasa primero a binario. Prof.: Justo Sáez Arenas [jsaez.com] 6 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información 2.2. Códigos alfanuméricos: ASCII ( American Standard Code for Information Interchange) Utiliza 7 bits aunque también existe con 8 bits. Podemos dividir la tabla ASCII en grupos: - Códigos transparentes: no se corresponden a ningún carácter alfanumérico y se utilizan para transmitir instrucciones de control como por ejemplo indicar un salto de línea a la impresora, emitir un pitido, etc. - Símbolos y números: ocupan las posiciones desde el 32 al 64 ( Decimal). Letras: ocupan las posiciones desde 65 hasta 127, se incluyen las mayúsculas, minúsculas y algunos símbolos matemáticos y de puntuación. En Windows 98 se utiliza la codificación ANSI, similar al ASCII, pero cambian algunos caracteres. De ahí que si intentamos sacar con la combinación de teclas [ALT +Cod.ascii], algunos caracteres no son como nos aparecen en la tabla ASCII. Prof.: Justo Sáez Arenas [jsaez.com] 7 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información Fieldata. Utiliza 6 bits con lo cual permite codificar 64 caracteres. En este código no se hace ninguna distinción entre letras minúsculas y mayúsculas. BCD o Binary Coded Decimal. Normalmente utilizaba 6 bits y en la actualidad añade un bit adicional para controlar posibles errores de transmisión. Los caracteres numéricos del 1 al 9 se corresponden con su representación en binario por eso se denominan Decimal Codificado en Binario, básicamente su estructura es la siguiente: Significado Bits de Verificación Bits de zona Bits de posición Bit nº.: 6 5 4 3 2 1 0 Bit de verificación: Se utiliza para controlar posibles errores de codificación. Bits de zona: es el 4º o 5º bit, cuando son 00 indican que el que se representa es un número. Bits de posición: codifican el carácter. EBCDIC ( Extended Binary Coded Decimal Interchange Code). Similar al BCD, pero utiliza 8 bits por lo que representa 256 símbolos, lo que posibilita codificar más caracteres de control y especiales. Es bastante utilizado en máquinas IBM. Unicode. Es un juego de caracteres en el que se emplean dos bytes (16 bits) para representar cada carácter. Esto permite la representación de 65536 símbolos, lo que posibilita representar cualquier carácter de cualquier lenguaje escrito del mundo, incluido el chino, japonés o coreano. Lo utiliza Windows NT. Prof.: Justo Sáez Arenas [jsaez.com] 8 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información 3. Representación de la información: Para representar datos numéricos se usan formatos que van a ahorrar espacio de memoria ya que si representamos con las codificaciones anteriormente estudiadas sería muy difícil de manejar, en casos que necesitásemos utilizar números de muchas cifras. Básicamente podemos diferenciar formatos en “coma fija” y en “coma flotante” que nos va a permitir almacenar el signo, la parte entera y la parte decimal de un número. 3.1. Coma fija: En este formato la coma ocupa una posición constante. Se puede almacenar de tres formas diferentes, en módulo y signo, complemento a 1 y complemento a 2. Vemos a continuación una tabla con números codificados de las tres formas. DECIMAL MÓDULO Y SIGNO +127 0-1111111 +64 0-1000000 +5 0-0000101 +0 0-0000000 -0 1-0000000 -5 1-0000101 -30 1-0011110 -127 1-1111111 Ca 1 = = = = 1.1111111 1.1111010 1.1100001 1.0000000 Ca 2 = = = 0-0000000 0-0000000 1-1111011 1-1100010 1-0000001 Signo y Módulo. Es una forma de representar los números positivos y negativos. En Los números positivos el primer bit es un 0 y el resto indican el valor absoluto Para números negativos el primer bit es un 1 y el resto indican el valor absoluto. Como se observa el cero tiene dos posibles representaciones con lo que se desperdicia una posibilidad de codificación, esto se intentara evitar con otros tipos de representaciones. Así mismo se observa que podemos representar mediante 8 bits valores entre el –127 y el +127. Complemento a 1 (Ca1) En este tipo de representación binaria, los números positivos se representan igual que en modulo y signo. Los negativos se representan como complemento a 1 del número positivo. El cero sigue teniendo dos representaciones. El Ca 1 de un número en binario se calcula directamente cambiando los 0 por 1 y viceversa. Por ejemplo si queremos representar el -5, tomamos el +5 y cambiamos los ceros por unos y viceversa. Prof.: Justo Sáez Arenas [jsaez.com] 9 Sistemas Informáticos Multiusuario y en Red Tema 2. Codificación y Representación de la Información Complemento a 2 (Ca 2): Este tipo de representación los números positivos se representan con modulo y signo y los negativos con el Ca 2, el cual se calcula pasando previamente a Ca 1 y sumando 1. Con éste método el cero solo tiene una representación. Y además para realizar la resta de dos números el ordenador realiza un complemento a 2 y luego suma, con lo que un circuito sumador sirve como restador, gracias a pasar el sustraendo a complemento a 2. 3.2. Coma flotante. En oposición al término de números en coma aparece otro código de representación de números reales denominado en punto o coma flotante (CF ó FP). Este nombre se deriva del hecho de que la posición de la coma puede flotar o moverse a cualquier posición del número y permitir por ello una mayor precisión en el mismo. Para entender el significado de los números en CF, acudimos a ejemplos más evidentes del sistema decimal: Supongamos que tenemos los números reales con seis dígitos: 3135,07 y 0,04576. En notación de coma fija con 4 dígitos para los enteros y 2 dígitos para los decimales se escribirían 3135,07 y 0,04, perdiendo información en el segundo de los números. Manteniendo el mismo número de 6 dígitos significativos, si se pasa a una notación de CF normalizada, en donde la coma decimal se sitúa a la izquierda del primer dígito significativo, es decir la parte entera vale 0, se escribirán 0,313507 x104 y 0,457600 x 10-1. Como se observa en estos ejemplos, la coma decimal se ha desplazado (ha flotado) hacia la derecha o hacia la izquierda para obtener la misma estructura en la notación. En el caso del sistema binario la coma binaria flota de la misma forma: Sean los números binarios 0101,102 (5,510) y 0,0112 (0,37510) en CF normalizada, con 5 dígitos significativos, se representarían como 0,10110 x23 y 0,11000 x 2-1. Observar que siempre el primer dígito binario significativo debe ser un '1'. La notación en CF es más lenta de procesar y menos precisa que la notación en coma fija, pero dado un tamaño fijo de dígitos, permite un mayor rango en los números que se pueden representar. Debido a que las operaciones aritméticas que se realizan con números en CF son muy complejas de realizar, muchos sistemas destinan un procesador especial para la realización específica de este tipo de operaciones, denominado coprocesador matemático o numérico. Prof.: Justo Sáez Arenas [jsaez.com] 10