3. Sistemas de Numeración, Códigos y Representación interna de la información 1. Introducción 2. Sistemas de Numeración 1) Sistemas de representación más usuales 2) Representación en base b: decimal y octal 3) Representación en binario natural 3. Códigos intermedios de representación 1) Códigos intermedios: octal y hexadecimal 2) Códigos de E/S más usuales ASCII 4. Representación interna de la información 1) Lógicos, caracteres y complejos 2) Enteros y reales Bibliografía Prieto, Lloris y Torres. Capítulo 3. Zamarreño y cols. Capítulo 2.
Objetivos Entender cómo se representa internamente la información en un ordenador. Comprender la relación entre la codicación externa e interna de la información: distintos códigos. Conocer los distintos tipos de representación interna para los tipos de datos más habituales.
3.1. Introducción Externamente, manejamos información expresada en un cierto lenguaje, denominado código de entrada/salida, que se construye sobre un cierto alfabeto Si queremos comunicarnos con el ordenador, debemos usar un alfabeto que después se pueda representar dentro del mismo: Caracteres Alfabéticos: Mayúsculas y minúsculas del alfabeto inglés. Caracteres Numéricos: Del cero al nueve. Caracteres Especiales: {, }, #, $, %, &,,, +,,/,(, ), },!,?, [, ] Caracteres de Control Representan órdenes de control al ordenador: EOL, EOT, SYNC, ESC, BEEP, CTRL Caracteres Grácos Permiten representar - guras o iconos elementales.
Generalmente nos referiremos a estos conjuntos como: Caracteres alfanuméricos: que abarcan las dos primeras. Caracteres de texto: que abarcan las tres primeras categorías. El ordenador procesa estos datos/información en forma de: instrucciones que forman el programa (indica qué debe hacerse)y los datos con los que debe trabajar Instrucciones y datos deben almacenarse dentro del ordenador La información internamente se representará mediante un alfabeto o código, denominado representación interna. Físicamente la información se presentará mediante una combinación de bits (binary digit, y que a la hora de la implementación física se convertirá en dos niveles de tensión diferenciados).
Es necesaria, por tanto, una codicación externa mediante códigos de Entrada/Salida normalizados, que se puedan traducir de la notación externa a la representación binaria correspondiente. {a,b,...,z,a,...,z,0,...,9, (,...,]} {0, 1} n α β Donde β está codicado mediante n bits. Los códigos de Entrada / Salida, aunque normalizados, pueden variar en función del fabricante. La operaciones que normalmente realizamos con los símbolos tienen su equivalente en las operaciones sobre el alfabeto binario. Para facilitar la traducción entre los códigos externos (que nosotros entendemos) y los internos (binario, difícil de comprender para el ser humano) existen lo que se denominan códigos intermedios, como pueden ser el código octal o el hexadecimal.
3.2. Sistemas de numeración 3.2.1. Sistemas de representación más usuales Sistemas de numeración aditivos, como el que usaban los romanos Sistemas de numeración posicionales Un sistema de numeración en base b utiliza b símbolos de un alfabeto y el valor de cada número dependerá de la posición que ocupe cada símbolo. Por lo tanto, un número no será más que una secuencia de cifras (elegidas entre los b símbolos posibles). 3.2.2. Sistema de Numeración Decimal Símbolos permitidos:0, 1, 2, 3, 4, 5, 6, 7, 8, 9 245,63=2 10 2 +4 10 1 +5 10 0 +6 10 1 +3 10 2 Generalizando: Un número: N...n 4 n 3 n 2 n 1 n 0 n 1 n 2... Su valor: N...+ n 4 b 4 + n 3 b 3 + n 2 b 2 + n 1 b + n 0 b 0 + n 1 b 1 + n 2 b 2 +...
Otro ejemplo: Sistema de Numeración Octal Base: 8 Símbolos permitidos: 0,1,2,3,4,5,6,7 175,37 8 =1 8 2 +7 8 1 +5 8 0 +3 8 1 +7 8 2 = 125,4882812 10 3.2.3. Representación en binario natural Representación en base dos En el sistema de Numeración en Base Dos o Binario b =2, ysólo se usan dos elementos para representar cualquier número 0, 1. Estos elementos del alfabeto se denominan cifras binarias o bits. Ejemplo: Tabla de números en binario del 0 al 7 (con tres bits). Código binario Equivalente decimal 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7
Transformaciones entre bases De binario a decimal b=2 Aprovechando la expresión vista antes de N 110100 2 =1 2 5 +1 2 4 +1 2 2 =52 10 0,10100 2 =1 2 1 +1 2 3 =0,625 10 10100,001=2 4 +2 2 +2 3 =20,125 10 Simplemente hay que sumar los pesos de las posiciones en las que hay un uno. De decimal a binario Parte entera El nuevo número estará formado por los restos de las sucesivas divisiones por dos y el último cociente, teniendo en cuenta que éste será el MSB (Most Signicative Bit) y el primer resto será el LSB (Lesser Signicative Bit). 26 10 = 11010 2 Parte fraccionaria Se obtiene al multiplicar sucesivamente por dos la parte fraccionaria. El nuevo número se forma con las partes enteras que serán siempre 0ó1. 0,1875 10 =0,0011 2
Ambos códigos no han de corresponderse en longitud, lo cual puede llevarnos a un error de truncamiento cuando tengamos un número jo de posiciones y no alcancemos un número exacto y nos veamos obligados a detenernos. Ejemplo: buscad la representación binaria de la expresión decimal 0.6