Tema 1: Sistemas de numeración, operaciones y códigos. 1 Para representar ideas, los seres humanos (al menos los occidentales) utilizamos cadenas de símbolos alfanuméricos de un alfabeto definido. En el mundo de los microcontroladores y microprocesadores la información consiste en señales eléctricas cuyos valores se asocian a los conceptos lógicos Verdadero y Falso, lo que da lugar a la utilización del sistema de numeración binario. Verdadero -> 1 Álgebra de Boole Falso -> 0 2 1 Álgebra de Boole Funciones lógicas más usuales: •Adición, unión o función O (OR): f(A,B) = A + B •Producto, intersección o función Y (AND): f(A,B) = A · B •Complementación, negación, inversión o función NO (NOT): f(A)=A=A’ •Función O exclusiva (XOR): f(A,B) = A ⊕B 3 Álgebra de Boole Tablas de verdad: representan los valores adoptados por las funciones lógicas. OR NOT A B A+B 0 0 0 XOR A A 0 1 1 A B A⊕B 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 AND A B A·B 0 0 0 0 1 0 1 0 0 1 1 1 4 2 Álgebra de Boole Propiedades del álgebra de Boole : asociativa A+(B+C) = (A+B)+C = A+B+C A·(B·C) = ( A·B)·C = A·B·C conmutativa A+B = B+A A·B = B· A distributiva A+B·C = (A+B) · (A+C) A·(B +C) = A·B + A·C Elemento neutro 0+A=A 1+A=1 0· A=0 Identidad A+A’=1 A· A’=0 Idempotencia A+A=A A· A=A Involución Absorción De Morgan 1· A=A ( A’)’=A A+A·B=A A·( A+B)=A A+A’·B=A+B A·( A’+B)= A·B (A+B)’=A’·B’ ( A·B)’=A’+B’ 5 Sistemas de codificación en los computadores •Los microcontroladores manejan información binaria . •Bit (binary digit): unidad mínima de información. •La información consta de secuencias de bits (códigos) que representan: •Instrucciones •Datos •Numéricos: 10000001(base 2)= 129(base 10) •Alfanuméricos: 10000001 en ASCII es el carácter “ü”. •Otros (gráficos, sonidos, etc). 6 3 Sistemas de codificación en los computadores Las limitaciones de diseño de los microcontroladores hacen que sus componentes estructurales tengan distintos anchos o tamaños de datos (tamaños privilegiados). •Octeto, carácter o byte: cantidad en bits necesaria para representar un carácter alfanumérico. Usualmente, 8 dígitos binarios o bits. •Palabra (precisión básica de un micro): máxima cantidad de información accesible y tratable en paralelo por las unidades aritmético-lógicas del computador y determina su potencia de cálculo. Es el tamaño de referencia para un computador y se mide en múltiplos de byte, existiendo tamaños de palabra de 8, 16, 32, 64, 128 bits, etc. 7 Sistemas de codificación en los computadores Codificación: establece las reglas que definen la correspondencia entre cada elemento de información y la secuencia de bits que constituye su código. Tipos: directa, por campos, por secuencias de códigos. Sistemas de codificación directa Se establece una correspondencia biunívoca entre un conjunto de símbolos y un conjunto de códigos binarios. Con n dígitos binarios se pueden representar 2n códigos binarios distintos. Ejemplos: •Con n=1 se pueden representar d=21 =2 combinaciones: {0,1} •Con n=2 se pueden representar d=22 =4 combinaciones: {00,01,10,11} •Con n=8 se pueden representar d=28 =256 combinaciones. •Para representar d símbolos serán precisos n d ígitos binarios, cumpliéndose que d =2 n , y por tanto n = log2 d 8 4 Sistemas de codificación en los computadores Sistemas de codificación por campos Se dota de significado específico a parte de la información codificada. Ejemplo: representación numérica mediante módulo y signo: el primer bit indica el signo, y los restantes el módulo. 00000001base(M/S) = 1 base(10) 10000001base(M/S)= -1 base(10) 9 Sistemas de codificación en los computadores Sistemas de codificación por secuencias de códigos Se dota de significado específico a parte de la información codificada, y diferentes símbolos se representan mediante códigos de diferentes longitudes. Ejemplo: secuencias de escape en lenguaje C • Las letras del alfabeto se representan mediante un solo carácter. • Fin de línea: \n; retorno de carro: \r; carácter \: \\ . 10 5 Sistemas de representación numérica Un sistema de representación numérica es un sistema de lenguaje consistente en: •Un conjunto ordenado de símbolos (dígitos o cifras). •un conjunto de reglas bien definidas para las operaciones aritméticas de suma, resta, multiplicación, división, etc. Los números en un sistema de numeración consisten en una secuencia (vector)de dígitos que pueden tener parte entera y parte fraccionaria, ambas separadas por una coma (o un punto) (N)(base r) = [(parte entera) , (parte fraccionaria)] (base r) La base (r) de un sistema de numeración especifica el número de dígitos o cardinal de dicho conjunto ordenado. Las bases más utilizadas son: •base 2: binaria = {0,1} •base 10: decimal = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} •base 16: hexadecimal = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} •base 8: octal = {0, 1, 2, 3, 4, 5, 6, 7} 11 Sistemas de representación numérica Equivalencias entre los 17 primeros números de los sistemas decimal, binario, octal y hexadecimal: 12 6 Sistemas de representación numérica El sistema más usual de representació n numérica es el sistema posicional donde cada dígito del vector numérico tiene un valor distinto dependiendo de su posición concreta en el vector. A sí un número en base r se representa de la siguiente manera: N(base r) = [a p- 1 a p- 2 ... a 1 a 0 , a -1 a -2 ... a -q ] (base r) •a i son los dígitos, •p es el número de dígitos enteros, •a p-1 es el dígito más significativo, •a -q es el dígito menos significativo. 13 Sistemas de representación numérica N= p−1 ∑ a ·r i =− q i i N(base r) = [a p- 1 a p- 2 ... a 1 a 0 , a -1 a -2 ... a -q ] (base r) Ejemplo: 1283(base 10) = [a 3=1 a 2=2 a 1=8 a 0= 3 a -i=0] (base 10) = 1 x 103+ 2 x 102+ 8 x 101+ 3 x 100= 1000+200+80+3 14 7 Sistemas de representación numérica: conversiones entre bases Conversión de base r a base s utilizando la aritmética de la base s: Esta conversión se usa normalmente para convertir de cualquier base a base 10. Dado un número N en base r, la conversión consiste en evaluar directamente dicha expresi ón usando la aritmética de la base s tanto para la parte entera como para la fraccionaria. Ejemplos: • convertir el número binario 1101,01 a base 10: 1101,01(base 2) = [a 3=1 a2=1 a1=0 a0= 1 a-1=0 a -2=1] (base 2) = 1 x 2 3+ 1 x 2 2+0 x 2 1+ 1 x 2 0 + 0 x 2 -1 +1 x 2 -2 = 1 x 8 + 1 x 4 +0 x 2 +1 x 1 +0 x 0.5 +1 x 0.25 = 13,25 (base 10) •convertir el número 14 en base 16 a base 10: 14 (base 16) = [a 1=1 a0= 4 ] (base 16) = 1 x 16 1+ 4 x 16 0= 1 x 16+ 4 x 1= 20 (base 10) 15 Sistemas de representación numérica: conversiones entre bases Conversión de base r a base s utilizando la aritmética de la base r: Esta conversión se usa normalmente para pasar de base 10 a cualquier otra base. Proceso de conversión: • la parte entera se convierte mediante divisiones sucesivas entre s(base r) • la parte fraccionaria se convierte mediante productos sucesivos por s(base r) 16 8 Sistemas de representación numérica: conversiones entre bases Ejemplo: • convertir el número decimal 19 a binario. Ejemplo: • convertir el número decimal 127 a hexadecimal . 17 Sistemas de representación numérica: conversiones entre bases Ejemplo: Ejemplo: • convertir el número decimal 0.1285 a base 4. • convertir el número decimal 0.3 a binario. 18 9 Sistemas de representación numérica: conversiones entre bases Los procesos de conversión entre bases se simplifican cuando las bases de partida y de llegada son una potencia de la otra. Casos más frecuentes: •Conversión entre binario y octal •Conversión entre binario y hexadecimal Los sistemas octal y hexadecimal son muy utilizados porque permiten representar grandes cadenas de dígitos binarios de forma abreviada. 19 Sistemas de representación numérica: conversiones entre bases Conversión de binario a octal: agrupar dígitos binarios de 3 en 3 a ambos lados de la coma y sustituir por su equivalente octal. Conversión de binario a hexadecimal: agrupar dígitos binarios de 4 en 4 a ambos lados de la coma y sustituir por su equivalente hexadecimal. 20 10 Sistemas de representación numérica: conversiones entre bases Conversión de octal a binario: cada dígito octal se sustituye su equivalente binario de tres bits. Conversión de hexadecimal a binario: cada dígito hexadecimal se sustituye por su equivalente binario de 4 bits. 21 Aritmética en base 2 22 11 Aritmética en base 2 23 Aritmética en base 2 24 12 C1 y C2 de los números binarios El complemento a 1 (C1) y el complemento a 2 (C2) de un número binario son importantes porque permiten la representación de números negativos. Obtención del C1 de un numero binario: intercambiando 1’s por 0’s y viceversa Obtención del C2 de un numero binario: C1 + 1 25 Codificación de números en BCD Codificaciones decimales: Son las encargadas de representar los números del sistema decimal, representando cada dígito decimal mediante una cadena de d ígitos binarios. Para representar 10 dígitos distintos (0, 1, ..., 9) se necesita un número mínimo de 4 bits. Con 4 bits se pueden representar 16 d ígitos distintos, luego se pueden asignar distintas combinaciones de bits a los 10 dígitos decimales Codificaci ón en BCD: Es la codificación decimal más sencilla y representa a los diez dígitos decimales asignándoles el c ódigo binario de su representación binaria pura con 4 bits. Con esa representació n un número decimal se evalúa mediante la expresión: b3 ·23 + b2 ·2 2 + b1 ·21 + b0 ·20 = b3 ·8 + b2 ·4 + b1 ·2 + b0 ·1 Por esta razón al código BCD se le conoce también como código 8-4 -2-1. 26 13 Codificación de números en BCD Ejemplo: En BCD, el número decimal de dos dígitos 56 se escribe (5) y (6), es decir 0101 0110, mientras que en binario puro se escribe como 111000. 27 Codificación de números en Exceso-3 (XS-3) Es una codificación derivada de la codificación BCD sin más que sumar 3 (0011) a la representación BCD de cada dígito decimal. 28 14 Código Gray 29 Código Johnson 30 15 Codificaciones alfanuméricas Son las codificaciones encargadas de representar los caracteres alfabéticos, numéricos, signos de puntuación y signos de control mediante cadenas de dígitos binarios. Al menos deben representar 26 letras del alfabeto y 10 dígitos, es decir 36caracteres, luego necesitan un mínimo de 6 bits. En realidad, se necesitan más caracteres, de forma que las codificaciones más utilizadas emplean 7 y 8 bits: ASCII EBCDIC (Extended BCD Interchange Code). Unicode (16 bits) 31 Código ASCII ASCII: •El Código estándar americano para el intercambio de información (American Standard Code for Information Interchange) es el código alfanumérico más extendido. •El código ASCII original utilizaba 7 bits para representar 128 caracteres (0 hasta 7F en hexadecimal (0111 1111)) donde los primeros 32 caracteres son de control (n o gráficos o invisibles) y los restantes son gráficos (visibles). •En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido. •Los códigos ASCII extendidos presentan variaciones nacionales. El código más usado en nuestra zona geográfica es el Latin -1. 32 16 Código ASCII 33 Bibliografía FUNDAMENTOS DE SISTEMAS DIGITALES T.L. Floyd Prentice Hall 34 17