Download sistema decimal
Document related concepts
Transcript
MODULO MATEMATICA DISCRETA TALLERES-GUÍAS DOCENTE: Lic. JESUS ALFREDO MERCADO B FEBRERO DE 2008 SISTEMAS DE NUMERACIÓN SISTEMAS DE NUMERACIÓN 1 Un sistema de numeración es un conjunto de símbolos y reglas de generación que permiten construir todos los números válidos en el sistema. Un sistema de numeración puede representarse como N = S + R donde: N es el sistema de numeración considerado S son los símbolos permitidos en el sistema. En el caso del sistema decimal son {0,1...9}; en el binario son {0,1}; en el octal son {0,1,...7}; en el hexadecimal son {0,1,...9, A, B, C, D, E, F} R son las reglas de generación que nos indican qué números son válidos y cuáles son noválidos en el sistema. Estas reglas son diferentes para cada sistema de numeración considerado, pero una regla común a todos es que para construir números válidos en un sistema de numeración determinado sólo se pueden utilizar los símbolos permitidos en ese sistema (para indicar el sistema de numeración utilizado se añade como subíndice al número). Ejemplos: El número 125(10 es un número válido en el sistema decimal, pero el número 12A(10 no lo es, ya que utiliza un símbolo (A) no válido en el sistema. El número 35(8 es un número válido en el sistema octal, pero el número 39(8 no lo es, ya que el 9 no es un símbolo válido en ese sistema. Esta representación posibilita la realización de sencillos algoritmos para la ejecución de operaciones aritméticas. SISTEMAS DE NUMERACIÓN POSICIONALES Los sistemas de numeración usados en la actualidad son posiciónales. En estos sistemas de numeración el valor de un dígito depende tanto del símbolo utilizado, como de la posición que ése símbolo ocupa en el número. En este sistema desempeña un papel fundamental el 0 inventado por el pueblo maya. Un sistema de numeración de base n significa que tenemos n cifras para escribir los números (desde 0 hasta n-1) y que n unidades forman una unidad de orden superior. Así en el sistema decimal los dígitos para escribir van desde el 0 hasta el 9 y cuando tenemos 9 unidades y añadimos 1 tendremos una unidad de segundo orden o decena y pondremos las unidades a cero. Pero estamos demasiado acostumbrados a que después del 9 sigue el 10 y luego el 11, que no entendemos bien su significado profundo. Esto es debido a que desde hace generaciones (desde que fue desarrollado e inculcado por los árabes) hemos venido contando en un Sistema de Base 10 o sistema decimal el cuál, es también conocido como Sistema Arábigo. Asimismo al 99 le sigue el 100 porque si añadimos una unidad a las nueve que tenemos formamos una decena que unida a las nueve que tenemos formamos una centena. Tal es la costumbre de la comunidad civil el calcular en decimal que la gran mayoría ni siquiera se imagina que pueden existir otros tipos de numeración que no son precisamente de Base 10, tales como el Hexadecimal , el Octal, o el Binario. EL SISTEMA DECIMAL El sistema decimal es un sistema de numeración en el que las cantidades se representan utilizando como base el número diez, por lo que se compone de las cifras: cero (0), uno (1), dos (2), tres (3), cuatro (4), cinco (5), seis (6), siete (7), ocho (8) y nueve (9). Este conjunto de símbolos se denomina números árabes, o también se les llaman dígitos. Es el sistema de numeración usado habitualmente en todo el mundo (excepto ciertas culturas) y en todas las áreas que requieren de un sistema de numeración. Sin embargo contextos, como por SISTEMAS DE NUMERACIÓN 2 ejemplo en la informática, donde se utilizan sistemas de numeración de propósito más específico como el binario o el hexadecimal. También pueden existir en algunos idiomas vestigios del uso de otros sistemas de numeración, como el quinario, el duodecimal y el vigesimal. Por ejemplo, cuando se cuentan artículos por docenas, o cuando se emplean palabras especiales para designar ciertos números (en francés, por ejemplo, el número 80 se expresa como "cuatro veintenas"). Según los antropólogos, el origen del sistema decimal está en los diez dedos que tenemos los humanos en las manos, los cuales siempre nos han servido de base para contar. El sistema decimal es un sistema de numeración posicional, por lo que el valor del dígito depende de su posición dentro del número. 9ª 8ª 7ª 6ª 5ª 4ª 3ª 2ª 1ª Posición Posición Posición Posición Posición Posición Posición Posición Posición centenas decenas unidades centenas decenas unidades de de de centenas decenas unidades de mil de mil de mil millón millón millón CMi DMi UMi CM DM UM C D U Así por ejemplo, el número El valor relativo de una cifra depende del lugar que ocupe dentro de un número. Diez Diez Diez Diez Diez Diez Diez Diez unidades forman una decena. decenas forman una centena. centenas forman una unidad de mil. unidades de mil forman una decena de mil. decenas de mil forman una centena de mil. centenas de mil forman una unidad de millón. unidades de millón forman una decena de millón. decenas de millón forman una centena de millón. En el numeral 222 el mismo dígito tiene distintos valores de acuerdo con cada posición que ocupa en el numeral 222. 2 2 2 2 2 2 centenas decenas unidades Como 1 decena = 10 unidades 1 centena = 100 unidades Entonces, los valores del dígito 2, según su posición en el numeral son los siguientes: SISTEMAS DE NUMERACIÓN 3 2 2 2 2 x 100 unidades = 200 unidades 2 x 10 unidades = 20 unidades 2 unidades EL SISTEMA BINARIO Estamos habituados al sistema de numeración decimal y nos parece lógico usarlo en todo momento. Pero hay ocasiones en donde no es el más apropiado. Uno de esos mundos, en los que existen sistemas más descriptivos de los fenómenos que el decimal, es el de los procesadores. Las computadoras trabajan internamente con dos niveles de voltaje, por lo que su sistema de numeración natural es el sistema binario (encendido ‘1’, apagado ‘0’). Por su naturaleza digital, las computadoras son máquinas esencialmente binarias. Utilizan el sistema de numeración llamado binario, en el que sólo se disponen dos signos: 0 y 1. Contando correlativamente de manera binaria, diríamos: 0, 1, 10, 11, 100, 101, 110, 111, ... Tanto el sistema binario, como el decimal y el hexadecimal, son sistemas en los que la posición de cada dígito representa información de mucha importancia. Veamos un ejemplo de cómo se descompone posicionalmente un número decimal: El número 7935 = 1000 * 7 + 100 * 9 + 10 * 3 + 1 * 5 Como hay diez símbolos (del 0 al 9), una decena representa 10 unidades, una centena representa 10 decenas, etc. Diez unidades de una posición, valen una unidad en la posición contigua a la izquierda. En el sistema binario, con dos símbolos solamente, cada posición a la izquierda vale el doble de la que le sigue a la derecha. O lo que es lo mismo decir, la relación entre las sucesivas posiciones se da según la sucesión 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536..... La que a su vez puede expresarse como potencias crecientes de 2: 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 210 , 211 , 212 , 213 , 214 , 215 , 216 ..... Para el sistema de numeración binaria, valen las dos reglas prácticas siguientes: Un número de n bits puede representar a un decimal de un valor de hasta 2n - 1 El multiplicador del bit de posición n, vale 2n Ejemplos: Un número de 8 bits cuenta desde 0 hasta 255. El multiplicador del bit 7 es 128. (El bit número 7 tiene un “peso” de 128) Notar que siempre se comienza a contar desde cero. En un número binario, al igual que en un decimal, el bit menos significativo (correspondiente al multiplicador 20, o sea 1) es el que se escribe más a la derecha: bit# 10 9 8 7 6 5 4 3 2 1 0 mult 1024 512 256 128 64 32 16 8 4 2 1 Veamos como ejemplo práctico un número de 7 bits cualquiera como 1001101 (notar que los bits se ordenan 6...0) 1001101 = 64 * 1 + 32 * 0 + 16 * 0 + 8 * 1 + 4 * 1 + 2 * 0 + 1 * 1 Esto nos proporciona una forma de traducir (cambiar de base) un número binario a decimal. Basta sumar aquellos multiplicadores cuyos bits estén en 1 e ignorar aquellos cuyo bit es 0. En nuestro anterior ejemplo es: 1001101 = 64 + 8 + 4 + 1 = 77 decimal Los números binarios son los que efectivamente fluyen dentro del procesador en una PC, se guardan en memoria o disco, o se transmiten (modulados) por MODEM. Pero un humano no puede manipular con facilidad números como: SISTEMAS DE NUMERACIÓN 4 1101 0011 0101 0110 1010 0101 1100 0011 Que es de 32 bits (hay 32 símbolos en el número, desde el bit 31 a la izquierda hasta el bit 0, a la derecha) y se ha ordenado ex-profeso en grupos de a cuatro por cuestiones de comodidad que serán evidentes algo más adelante. Desafortunadamente las computadoras trabajan en sistema binario y aunque es posible hacer la conversión entre decimal y binario, no es precisamente una tarea cómoda. El sistema de numeración hexadecimal, o sea de base 16, resuelve este problema: es compacto y nos proporciona un mecanismo sencillo de conversión hacia el formato binario. EL BIT Es el acrónimo de Binary Digit (dígito binario). Un bit es la unidad mínima de información empleada en informática. Representa un uno o un cero (abierto o cerrado, blanco o negro, cualquier sistema de codificación sirve). A través de secuencias de bits, se puede codificar cualquier valor discreto como, por ejemplo, números, palabras e imágenes. EL BYTE Se describe como la unidad básica de almacenamiento de información, siendo equivalente a ocho bits. Se suelen escribir los números binarios como una secuencia de grupos de cuatro bits, también conocidos como NIBBLES. Según el número de estas agrupaciones los números binarios se clasifican como: Unidad: Núm. bits Ejemplo: Bit 1 1 Nibble 4 0101 Byte (Octeto) 8 0000 0101 Palabra 16 0000 0000 0000 0101 Doble Palabra 32 0000 0000 0000 0000 0000 0000 0000 0101 Los computadores personales con el sistema operativo MS DOS utilizaban palabras de 16 BITS. Los sistemas operativos actuales sobre los que corre AutoCAD 2000 utilizan Palabras de 32 BITS. Los prefijos kilo, mega, giga, etc. se consideran potencias de 1024 en lugar de potencias de 1000. Esto es así porque 1024 es la potencia de 2 (210) más cercana a 1000. Nombre Abrev. Factor kilo K 2 mega M 220 = 1 048 576 1 byte: 8 bits giga G 230 = 1 073 741 824 tera T 240 = 1 099 511 627 776 1 Kilobyte: 1024 bytes peta P 250 = 1 125 899 906 842 624 exa E 260 = 1 152 921 504 606 846 976 zetta Z 270 = 1 180 591 620 717 411 303 424 yotta Y 280 = 1 208 925 819 614 629 174 706 176 10 = 1024 EL SISTEMA OCTAL SISTEMAS DE NUMERACIÓN 5 1 Megabyte: 1024 Kilobytes (Kb) 1 Gigabyte: 1024 Megabytes (Mb) 1 Terabyte: 1024 Gigabytes (Gb) El sistema numérico en base 8 se llama octal y utiliza los dígitos 0 a 7. Los números octales pueden construirse a partir de números binarios agrupando cada tres dígitos consecutivos de estos últimos (de derecha a izquierda) y obteniendo su valor decimal. Por ejemplo, el número binario para 74 (en decimal) es 1001010 (en binario), lo agruparíamos como 1 001 010. De modo que el número decimal 74 en octal es 112. En informática, a veces se utiliza la numeración octal en vez de la hexadecimal. Tiene la ventaja de que no requiere utilizar otros símbolos diferentes de los dígitos. Es posible que la numeración octal se usara en el pasado en lugar de la decimal, por ejemplo, para contar los espacios interdigitales o los dedos distintos de los pulgares. Un número octal puede ser: 45.328 ó 45.32octal | Representación Octal Para obtener la representación decimal de un número Octal se puede utilizar N10 1 ai 8i 4 * 81 5 * 80 3 * 8 1 2 * 8 2 32 5 3 / 8 2 / 64 37.40625 i 2 CONVERSIÓN ENTRE LOS SISTEMAS BINARIO Y OCTAL Como se ha planteado, son fácilmente transformables, basta reagrupar 3 cifras binarias de derecha a izquierda y convertirlas a su equivalente octal, como se puede apreciar a continuación: 011011001112 = 15478 Donde, de derecha a izquierda: 1112 = 78, 1002 = 48, 1012 = 58 y 0012 = 18. Nótese como en el dígito de la izquierda pueden faltar bits, sustituyéndolos por cero(s). Para realizar el proceso inverso, transformar de octal a binario, basta sustituir cada cifra en octal por las tres equivalentes en binario, como se muestra a continuación: 34208 = 0111000100002 Donde, de derecha a izquierda: 08 = 0002, 28 = 0102, 48 = 1002 y 38 = 0112 La base de operaciones de una microcomputadora está organizada en 8, 16 ó 32 cifras binarias, las cuales constituyen 3, 6 y 11 cifras octales respectivamente. DECIMAL 0 1 2 3 4 5 6 7 8 9 10 11 SISTEMAS DE NUMERACIÓN BINARIO 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 6 OCTAL 0 1 2 3 4 5 6 7 10 11 12 13 12 13 14 15 1100 1101 1110 1111 14 15 16 17 EL SISTEMA HEXADECIMAL El sistema hexadecimal es un sistema de numeración vinculado a la informática, ya que las computadoras interpretan los lenguajes de programación en bytes, que están compuestos de ocho dígitos. Como veremos en la unidad de Hardware, el procesador 80386 hace ya más de una década manipulaba sin problemas números de 32 bits. Un humano necesita manejarlo de otra manera y por eso se inventó el sistema hexadecimal, con 16 símbolos, ya que si uno agrupa cuatro bits obtiene 16 combinaciones posibles (24 = 16). Esto tiene una razón. Nuestro sistema decimal no se corresponde en la cantidad de dígitos con el binario en cambio, el hexadecimal si, porque cada cuatro bits representan un dígito hexadecimal exacto. En un sistema hexadecimal, necesitamos 16 símbolos. Ya que somos muy buenos manejando números decimales, adoptamos esos diez símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9) para empezar, pero hay que agregar otros seis: A, B, C, D, E y F Cada trozo de información recibe un nombre propio según la cantidad de bits que posea: Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 Un ejemplo de número en hexadecimal puede ser: SISTEMAS DE NUMERACIÓN 7 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 1C6E.316 = 1C6E.3hexadecimal | Representación hexadecimal. Para su conversión al sistema decimal, aplicando N 10 3 ai 16 i 1 *16 3 12 *16 2 6 *161 14 *16 0 3 *16 1 32 5 3 / 8 2 / 64 37.40625 i 1 = 1*4096+ 12*256+ 6*16+ 14*1+ 3*1/16 = 7278.1875 Nótese como hay que hacer las sustituciones basándose en las igualdades: A=10, B=11, C=12, D=13, E=14 y F=15. CONVERSIÓN ENTRE LOS SISTEMAS BINARIO Y HEXADECIMAL. La equivalencia entre las cifras hexadecimales y binarias se muestra en la tabla anterior. En este caso se requieren de cuatro cifras binarias por cada cifra hexadecimal (cuatro cifras binarias generan 24=16 posibles combinaciones, que corresponden con 16 cifras en el sistema hexadecimal). El método de conversión de binario a hexadecimal es semejante al de binario a octal, sólo que ahora se agrupan de 4 en 4 bits de derecha a izquierda, así: 01011011010.10112 = 2DA.B16 Donde (de derecha a izquierda): 10112 = B16, 10102 = A16, 11012 = D16 y 0102 = 216 En la conversión de hexadecimal a binario se sustituye cada cifra del sistema hexadecimal por las correspondientes cuatro cifras que la identifican en el sistema binario como puede apreciarse en el siguiente ejemplo: 23E.F16 = 001000111110.11112 Donde (de derecha a izquierda): 216 = 00102, 316 = 00112, E16 = 11102 y F16 = 11112 Existen otros sistemas según su base: Trinario (0 al 2), Cuaternario (0 al 3), Duodecimal (0 al B). En todos ellos, los sistemas numéricos de base menor que 10 utilizan los símbolos de las primeras cifras del sistema decimal, los mayores o iguales a 10 las letras del alfabeto latino (A, B, C, etc.). CONVERSIÓN DEL SISTEMA NUMÉRICO DECIMAL AL RESTO DE LOS SISTEMAS DE NUMERACIÓN. Para transformar del sistema numérico decimal a cualquier otro sistema hay que trabajar por separado con la parte entera y la parte fraccionaria. PARTE ENTERA Para transformar la parte entera del número decimal se divide por la base del sistema al que se quiere transformar tantas veces como sea necesario hasta que el último cociente sea cero. El primer resto obtenido ( r0) constituye la cifra menos significativa( la de menor peso) del número que se busca, mientras que el último resto( rn-1, donde n es el número de divisiones a ejecutar o el número de cifras del sistema destino) constituye la cifra más significativa ( la de menor peso) del número en cuestión. SISTEMAS DE NUMERACIÓN 8 El número resultante sería: rn-1 rn-2 rn-3 .... r0 Ejemplos: 1. Convertir a binario el número 250. Como se realizan sucesivas divisiones entre la base del sistema destino, se dividirá entre 2 (base del sistema binario): 250 / 2 = 125 resto 0 r0 (Cifra menos significativa del número binario). 125 / 2 = 62 resto 1 r1 62 / 2 = 31 resto 0 r2 31 / 2 = 15 resto 1 r3 15 / 2 = 7 resto 1 r4 7 / 2 = 3 resto 1 r5 3 / 2 = 1 resto 1 r6 1 / 2 = 0 resto 1 r7 (Cifra más significativa del número binario). El número resultante sería: r7 r6 r5 r4 r3 r2 r1 r0 = 111110102 Por lo tanto: 25010 = 111110102 Existe un método alternativo de conversión decimal a binario denominado "potencias de dos", este consiste en "examinar" en primer lugar el número decimal para descubrir la mayor potencia de dos que se le puede restar, continuando el proceso hasta reducir el número decimal original a cero. En el ejemplo al número 250 la primera potencia de dos que se le puede restar es 128( la próxima de mayor orden es 256 que supera el número) por lo que la cifra del número binario que posea ese peso debe ser seteada, 250-128=122 y a 122 la próxima potencia de dos que se le puede restar es 64, la sustracción puede ser realizada por lo que la cifra binaria cuyo peso sea 64 debe ser seteada; así se continúa hasta que el resulta sería: Potencias de dos: 128 64 32 16 8 4 2 1 Número binario: 1 1 1 1 1 0 1 0 Lo que corresponde con la solución del ejemplo. 2. Convertir a octal el número 160. Se realiza, para la conversión exigida, sucesivas divisiones entre la base del sistema octal (8). 160 / 8 = 20 resto 0 r0 (Cifra octal menos significativa) 20 / 8 = 2 resto 4 r1 2/8=0 resto 2 r2 (Cifra octal más significativa) La solución sería: r2 r1 r0 = 2408 Por tanto: 16010 = 2408 3. Repita ejemplo 1 pero a través del sistema octal. Una forma más sencilla de convertir de decimal a binario es a través del sistema octal, que al tener mayor base, se necesitan menos divisiones y una vez que tenga el valor en octal, transferirlo a binario. En el caso del ejemplo 1: Primero se transferirá 250 a octal: SISTEMAS DE NUMERACIÓN 9 250 / 8 = 31 resto 2 r0 31 / 8 = 3 resto 7 r1 3 / 8 = 0 resto 3 r2 Tenemos pues: 25010 = 3728 Basta entonces transferir el valor octal a binario de manera directa y como ya conocemos, utilizando la tabla: 3728 = 0111110102 Como puede comprobarse, el resultado es idéntico al del ejemplo 1 4. Convertir a hexadecimal el número 155. Como la base del sistema hexadecimal es 16, se realizan sucesivas divisiones entre esta base. 155 / 16 = 9 resto 11 r0 (Cifra menos significativa) 9 / 16 = 0 resto 9 r1 (Cifra más significativa) Como el número 11 constituye la cifra B en hexadecimal, el resultado sería: r1 r0 = 9B16 Por lo tanto: 15510 = 9B16 Un método alternativo de transformar de decimal a hexadecimal lo constituye el transformar el número decimal a octal, este a binario y por último a hexadecimal. En el caso del ejemplo 4, llevaremos el valor a octal: 155 / 8 = 19 resto 3 19 / 8 = 2 resto 3 2 / 8 = 0 resto 2 El valor en octal sería: 15510 = 2338 El valor octal a binario: 2338 = 0100110112 El valor binario a hexadecimal: 0100110112 = 9B16 Por lo que 15510 = 9B16, lo que puede ser comprobado según el resultado del ejemplo 4. Un mismo número decimal convertido a los distintos sistemas numéricos estudiados ilustra lo expresado anteriormente, de que mientras mayor es la base, menor número de cifras para representar un número. El valor 15510 posee 8 cifras en el sistema binario (base 2), 3 cifras en el sistema octal (base 8), 3 cifras en el sistema decimal (base 10) y 2 cifras en el sistema hexadecimal (base 16). PARTE FRACCIONARIA Para transformar la parte fraccionaria de un número decimal a otro sistema, en lugar de dividirla, hay que multiplicarla por la base. Cada vez que se multiplique la fracción decimal por la base se obtiene una parte entera. La primera la denominamos p1 y se extrae del resultado para que solo quede la parte fraccionaria. Esta parte fraccionaria que queda se multiplica nuevamente por la base y se extrae la parte entera, que denominamos p2 y así sucesivamente hasta que sea necesario o se indique. El número resultante en la nueva base será: 0.p1 p2 p3 p4 ... pm Donde m es el número de cifras de la parte fraccionaria. Ejemplos: SISTEMAS DE NUMERACIÓN 10 1. Transforme en octal el número 0.32. 0.32*8=2.56 (p1=2) 0.56*8=4.48 (p2=4) 0.48*8=3.84 (p3=3) 0.84*8=6.72 (p4=6) 0.72*8=5.76 (p5=5) . . . . . . . . . El método ejecutado ha sido el siguiente: En primer lugar el número a convertir ha sido multiplicado por la base del sistema que se desea (8), al resultado (2.56) se le ha extraído la parte entera (2) y este constituirá la cifra más significativa de la parte fraccionaria, al extraérsele a 2.56 la parte entera queda 0.56, al que se le multiplica la base; al resultado (4.48) se le extrae la parte entera (4) y constituirá la próxima cifra de la fracción del número, este proceso continúa sucesivamente. Se puede plantear entonces que: 0.4210 = 0.24365...8 Note como el resultado no ha sido exacto, a nosotros corresponde seleccionar el número de cifras fraccionarias para una precisión deseada. 2. Convertir el número 0.12510 a binario. Como la base del sistema binario es 2, ahora las multiplicaciones sucesivas serán por este término: 0.125*2=0.250 (p1=0) (Cifra más significativa de la parte fraccionaria) 0.250*2=0.500 (p2=0) 0.500*2=1.000 (p3=1) 0.000*2=0.000 (p4=0) Y las cifras sucesivas seguirán siendo cero. Por tanto: 0.12510 = 0.0012 Un método más rápido puede ser el transformar la fracción decimal a octal y posteriormente a binario. En el ejemplo: 0.125*8=1.000 (p1=1) 0.000*8=0.000 (p2=0) Y las cifras sucesivas seguirán siendo cero. Se puede entonces afirmar: 0.12510 = 0.18 Y de octal a binario: 0.18=0.0012 Como habíamos calculado. Para realizar la conversión de números fraccionarios decimales a números fraccionarios hexadecimales, es conveniente utilizar el octal como intermediario. SISTEMAS DE NUMERACIÓN 11