2. Codificación Fundamentos de Informática Especialidad de Electrónica 2009-2010 Ismael Etxeberria Agiriano 07/10/2009
Índice 2. Codificación 1. Definiciones 2. Bases numeración 3. Números negativos 4. Conversiones 5. Caracteres 2
1. Definiciones 1. Definiciones Ordenador Máquina capaz de procesar información Programa Secuencia de órdenes/instrucciones que manipulan datos Los programas y los datos se guardan en dispositivos de memoria de tipos variados Internamente los programas y los datos se guardan en base binaria, independientemente del soporte físico Algoritmo Secuencia finita y ordenada de pasos que describe la resolución de un problema informático Determinista: en las mismas condiciones ha de dar siempre el mismo resultado Receta: ingredientes, utensilios y método de preparación 3
2. Bases numeración 2. Bases de numeración Estamos habituados a utilizar la base decimal o base 10 Dígitos del 0 al 9 Dígitos decimales válidos: 0 1 2 3 4 5 6 7 8 9 El ordenador utiliza la base binaria o base 2 Dígitos del 0 al 1 Dígito binario: bit Agrupación de 8 bits: octeto o byte Dígitos binarios válidos: 0 1 Una base relacionada a la binaria es la base octal o base 8 Dígitos del 0 al 7 Dígitos octales válidos: 0 1 2 3 4 5 6 7 Otra base relacionada es la base hexadecimal o base 16 Necesitamos 6 dígitos nuevos: a b c d e f Dígitos del 0 al f Dígitos hexadecimales válidos: 0 1 2 3 4 5 6 7 8 9 a b c d e f 4
2. Bases numeración Capacidad binaria (prefijos binarios) Expresada en potencias de 2 10 Tradicionalmente 1 Kilobyte = 2 10 bytes = 1024 bytes Confusión con el Sistema Internacional Kilobinario: kibi 1 Kibibyte = 2 10 bytes = 1024 bytes 1000 bytes = 1 Kilobyte Prefijo SI Símbolo Valor Prefijo binario Símbolo Pot 2 Kilo K 10 3 Kibi Ki 2 10 Mega M 10 6 Mebi Mi 2 20 Giga G 10 9 Gibi Gi 2 30 Tera T 10 12 Tebi Ti 2 40 Peta P 10 15 Pebi Pi 2 50 Exa E 10 18 Exbi Ei 2 60 Zetta Z 10 21 Zebi Zi 2 70 Yotta Y 10 24 Yobi Yi 2 80 5
2. Bases numeración Base decimal Estamos habituados a esta base Operamos con comodidad Para referirnos a otras bases utilizamos la base decimal El dígito 2 no existe en binario En base 7 el número 7 se representa como 10 En base 16 el número 16 se representa como 10 Si expresamos cualquier base en esa base diríamos siempre base 10 Para contar en cualquier base vamos incrementando el dígito de menor peso (el de menos valor) hasta que no nos quedan más dígitos; entonces lo pondremos a cero e incrementaremos el siguiente, y así sucesivamente Ejemplo: El número 3092 representa: 3 10 3 + 0 10 2 + 9 10 1 + 2 10 0 = 3 1000 + 0 100 + 9 10 + 2 1 = 3000 + 0 + 90 + 2 = 3092 6
2. Bases numeración Conversión de base b a base decimal Para expresar números en base b necesitamos b dígitos distintos: Dígitos del v 0 al v b-1 Dígitos válidos: v 0 v 1 v 2... v i... v b-2 v b-1 Un número d n-1...d i...d 1 d 0 en base b de n cifras representa: d n-1 b n-1 +...+ d i b i +...+ d 1 b 1 + d 0 b 0 Denominamos peso a la posición i de estos dígitos de 0 a n 1 Si la base b > 10 (siempre razonando en decimal) algunos de estos dígitos pueden representar números mayores que 9 pero no por ello difíciles de representar (a, b, c,...) Ejemplo: el 8af1 hexadecimal (b = 16) se corresponde: 8 16 3 + a 16 2 + f 16 1 + 1 16 0 = 8 4096 + 10 256 + 15 16 + 1 1 = 32768 + 2560 + 240 + 1 = 35569 en decimal 7
2. Bases numeración De decimal a base b Vamos dividiendo por la base y en el resto obtenemos los dígitos en orden inverso de menor peso a mayor peso Lo más sencillo para recordar el método es suponer que la base b es 10. Ejemplo: el 8302 a decimal (b = 10) se corresponde: 8302 10 30 830 10 02 30 83 10 2 0 3 8 10 Se lee en este orden 8 0 8
2. Bases numeración Ejemplo: el 415 en binario (b = 2) se corresponde: 415 2 015 207 2 1 007 103 2 1 03 51 2 1 11 25 2 1 12 12 2 Se lee en este orden 1 0 6 2 1 1 0 0 1 1 1 1 1 Compruébalo! 0 3 2 1 1 2 1 0 9
2. Bases numeración Comprobación: el 110011111 2 en decimal (b = 10) se corresponde: 1 2 8 +1 2 7 +0 2 6 +0 2 5 +1 2 4 +1 2 3 +1 2 2 +1 2 1 +1 2 0 = 256+ 128+0 +0 + 16+ 8+ 4+ 2 + 1 = 415 10 Octal El 110 011 111 2 se corresponde: 6 3 7 8 Hexadecimal El 1 1001 1111 2 se corresponde: 1 9 f 16 Compruébalos! 10
3. Números negativos 3. Números negativos Signo? Enteros con signo: signed Enteros sin signo: unsigned Cómo representar los números negativos? Signo y magnitud Se utiliza para los números en coma flotante IEEE 754 Complemento a 1 Complemento a 2 Desviada (biased) Para el exponente de los números en coma flotante IEEE 754 BCD Exceso a 8 11
3. Números negativos Complemento a nueve (decimal) Antes de ver el complemento a 2 Como ejemplo, razonar en base 10 es más fácil Lo que falta a cada dígito para llegar a 9 Importante el número de dígitos Ejemplo Para x= 23 con 4 dígitos Si ponemos los ceros a la izquierda: 0023 Dígito a dígito obtenemos lo que falta para 9: 9 0 9 0 9 2 9 3 = 9976 12
3. Números negativos Complemento a uno (binario) Lo que falta a cada dígito para llegar a 1 Importante el número de dígitos Ejemplo Para x= 23 en binario 10111 con 8 dígitos (en binario) Si ponemos los ceros a la izquierda: 00010111 Dígito a dígito obtenemos lo que falta para 1: 00010111 11101000 13
3. Números negativos Complemento a dos (binario) Para n dígitos podemos definir, complemento a 2 de un número entero x como: C x 2 = 2 n x x C 2 Ejemplo Para x= 23 en binario 10111 con 8 dígitos (en binario) 2 8 10111 = 256 23 = 233 100000000 (2 8 : 9 dígitos) 10111 11101001 coinciden? 14
3. Números negativos Complemento a dos (binario) Puede obtenerse alternativamente sumando 1 al complemento a 1 Ejemplo Para x= 23 en binario 10111 con 8 dígitos (en binario) Ponemos los ceros a la izquierda y complementamos: 00010111 11101000 Complemento a 1 + 1 11101001 Complemento a 2 (compárese con la anterior) 15
3. Números negativos Complemento a dos (binario) Comenzando por la derecha (el dígito de menos peso), copiar el número original (de derecha a izquierda) hasta encontrar el primer 1, después se niegan (complementan) los dígitos restantes Ejemplo Para x= 23 en binario 10111 con 8 dígitos (en binario) Ponemos los ceros a la izquierda y complementamos: 00010111 11101001 Complemento a 2 (compárese con la anterior) Ejemplo 01011100 10100100 Complemento a 2 16
3. Números negativos Complemento a dos (binario) El bit más significativo con todo su peso es negativo Si el bit más significativo es 0 el número será positivo; si es 1 será negativo Salvo el último, todos los ceros y todos los unos por la izquierda no serán significativos Ejemplos El 01, el 001, el 0001,... todos representan el 01 Con 1 bit el 1 representa el -1: -1 2 0 = -1 Con 2 bits el 11 representa el -1: -1 2 1 +1 2 0 = -2+1 Con 3 bits el 111 representa el -1: -1 2 2 +1 2 1 +1=-4+2+1 Con 4 bits el 1111 representa el -1: -8+4+2+1 Con 6 bits el 111111 representa el -1: -32+16+8+4+2+1 17
4. Conversiones 4. Conversiones de tipos A menudo vamos a necesitar convertir datos de tipos distintos y a menudo esto se hará automáticamente Para aumentar el tamaño de un entero se extiende el signo, es decir, se rellena por la izquierda con el bit más significativo Si aumentamos de tamaño un entero siempre seguiremos representando el mismo número Para disminuir el tamaño de un entero eliminamos los bytes sobrantes de mayor peso Si disminuimos de tamaño un entero podemos cambiar de número e incluso pasar de positivo a negativo y viceversa De real a entero se trunca, no se redondea 18
5. Caracteres 5. Codificación de caracteres La más tradicional es el código ASCII (7 bits) 19