Sie sind auf Seite 1von 10

1 de 10 Sistemas Numricos y Conversiones Representacin Por Notacin Posicional: Los humanos usamos habitualmente un sistema numrico representado por

diez numerales: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Estos, por si solos, son adecuados para contar hasta nueve. Estos numerales son la base del sistema decimal. Cuando necesitamos representar cantidades mayores, hacemos uso de lo que se conoce como "notacin posicional". As, cuando las unidades no son suficientes, agregamos otro numeral por la izquierda que representa a las decenas, es decir, la cantidad de grupos de diez que podemos formar con las unidades. Esto sigue as indefinidamente con los grupos de cien, mil, etc. Esta notacin posicional es una forma abreviada de escribir lo que aritmticamente puede representarse con detalle haciendo explcitos los multiplicadores. Veamos un ejemplo. El nmero quinientos veinticuatro, que habitualmente escribimos como 524, corresponde a 5 centenas + 2 decenas + 4, es decir 524 = 5*100 + 2*10 + 4 = 5*102 + 2*101 + 4*100 Esta notacin puede extenderse a otras bases diferentes de diez. Para evitar confusiones, haremos explcita la base y escribiremos nuestro nmero como 52410 . Cmo representamos nmeros fraccionarios? Simplemente agregando un separador (coma o punto) y anotando los numerales hacia la derecha de este separador. Mientras ms lejos del separador menor es su significacin. Entonces, el nmero decimal quinientos veinticuatro con 86 centsimas se escribe 524,86 = 5*100 + 2*10 + 4 + 8*0,1 + 6*0,01= 5*102 + 2*101 + 4*100 + 8*10-1 + 6*10-2 En general, si designamos los coeficientes por ai y la base por R, un nmero cualquiera en base R se puede representar como N = ( an an-1 an-2 ... a2 a1 a0 , a-1 a-2 a-3 ...)R lo que en forma explcita queda N = anRn +an-1Rn-1 +an-2Rn-2 + ... +a2R2 +a1R1 +a0R0 , a-1R-1 + a-2R-2 a-3R-3 ... Con esta representacin es fcil ver que al multiplicar o dividir N por una potencia de la base Rk todos los coeficientes ai se desplazarn k posiciones a la izquierda o a la derecha respectivamente. Esta propiedad de desplazar un nmero al multiplicar o dividir por la base es vlida independientemente de la base. Es posible que los humanos usemos un sistema decimal debido a que juntando ambas manos tenemos diez dedos. Si esto es verdad, en el mundo del Ratn Mickey el sistema sera octal, incluyendo solamente los numerales del 0 al 7. En los sistemas computacionales, la base natural es binaria (numerales 0 y 1) y queda determinada por las propiedades elctricas de sus componentes, pero por razones de orden prctico, se usan tambin las bases octales (8=2 3) y hexadecimales (16=24) ambas derivadas de la binaria y, por necesidad de comunicacin con los humanos, la decimal. Vemos entonces que es necesario encontrar algn mtodo para convertir nmeros de una base a otra. Para nmeros pequeos podemos usar una tabla como la siguiente:

2 de 10

TABLA DE EQUIVALENCIA NUMRICA


DECIMAL 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 BINARIO 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 100000 OCTAL 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 40 HEXADECIM AL 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 00010000 00010001 00010010 00010011 00010100 00010101 00010110 00010111 00011000 00011001 00100000 00100001 00100010 00100011 00100100 00100101 00100110 00100111 00101000 00101001 00110000 00110001 00110010

OBSERVACIN: del mismo modo que 005610 = 5610 , en las otras bases ocurre lo mismo, aunque con cierta frecuencia suele usarse campos de un tamao fijo representativo del tamao que maneja el sistema. As, en un sistema de 8 bits, el nmero 11 10 se puede representar indistintamente como 000010112, 0B16 o 00010001BCD.

3 de 10 Conversin de Base por Divisiones Sucesivas Supongamos que se necesita representar un determinado nmero decimal N 10 en una base distinta a la decimal. Lo que queremos encontrar es una expresin en que los dgitos a n an-1 an-2 ... a2 a1 a0 pertenecen a la nueva base que llamaremos R. Haciendo explcitas las potencias de R podemos representar N10 segn N10 = anRn +an-1Rn-1 +an-2Rn-2 + ... +a2R2 +a1R1 +a0R0 Si dividimos en forma entera esta expresin por R, el resultado queda: Q1 = N10/R = anRn-1 +an-1Rn-2 +an-2Rn-3 + ... +a2R1 +a1 lo que nos permite aislar a0 que es el resto de esta divisin Si dividimos el cuociente Q1 por R, el resultado queda: Q2 = Q1/R = anRn-2 +an-1Rn-3 +an-2Rn-4 + ... +a2 lo que nos permite aislar a1 que es el resto de esta divisin ... y as podemos continuar hasta aislar an . OBSERVACIN: ntese que los dgitos se obtienen comenzando por a0 , el menos significativo. Ejemplo Numrico 1: Convertir 7110 a binario 71/2 35/2 17/2 8/2 4/2 2/2 1/2 7110 = = = = = = = = 35 17 8 4 2 1 0 resto 1 resto 1 resto 1 resto 0 resto 0 resto 0 resto 1

10001112

Ejemplo Numrico 2: Convertir 43710 a hexadecimal 437/16 = 27/16 = 1/16 = 43710 = 27 1 0 resto 5 = resto 11 = resto 1 = 5 B 1

1B516

4 de 10 Ejemplo Numrico 3: Convertir 111102 a decimal En la conversin de binario a decimal se evala directamente los coeficientes y potencias. 111102 = 1*24 + 1*23 + 1*22 + 1*21 + 0*20 = 16 + 8 + 4 + 2 + 0 = 3010 TABLA DE POTENCIAS DE 2 0
1

1
2

2
4

3
8

4
16

5
32

6
64

7
128

8
256

9
512

10
1.024

11
2.048

12
4.096

13
8.192

14
16.384

15
32.768

16
65.536

17
131.072

18
262.144

19
524.288

20
1.048.576

21
2.097.152

22
4.194.304

23
8.388.608

24

25

26

27

28

29

30

31

16.777.216 33.554.432 67.108.864 134.217.728 268.435.456 536.870.912 1.073.741.824 2.147.483.648

Si consideramos los nmeros enteros, esta tabla nos muestra que un byte (8 bits) puede representar un mximo de 256 valores diferentes. Un grupo de 16 bits puede representar 65.536 valores diferentes y uno de 32 bits puede representar un mximo de 4.294.967.296 valores diferentes. En la actualidad las CPUs pueden manejar directamente 64 y en algunos casos 128 bits. Con 64 bits el nmero entero representable directamente 36.893.488.147.419.103.232 37*1018 microsegundos en un milln de aos. Ejemplo Numrico 4: Convertir 111102 a octal Primero debemos asegurarnos de que el largo del nmero binario es un mltiplo de tres simplemente agregando ceros por la izquierda y luego se asigna el valor octal equivalente a cada grupo de tres bits 0111102 = 368 OBSERVACIN: es frecuente que para conversiones de nmeros binarios de ms de 8 bits de largo a octal se divida estos en subgrupos de 8 bits. Por ejemplo 01101000112 se arregla as 001 101000112 = 12438 , y el nmero de 16 bits 11111111 111111112 = 3773778 Ejemplo Numrico 5: Convertir 111102 a hexadecimal Primero debemos asegurarnos de que el largo del nmero binario es un mltiplo de cuatro simplemente agregando ceros por la izquierda y luego se asigna el valor hexadecimal equivalente a cada grupo de cuatro bits 000111102 = 1E16 Para convertir de hexadecimal a binario se invierte este proceso, cada dgito hexadecimal da origen a cuatro dgitos binarios. es de

5 de 10 Conversin de la Parte Fraccional de un Nmero La conversin de la parte fraccionaria de un nmero se puede efectuar multiplicando sucesivamente por la base. En este caso, los dgitos interesantes son los que forman la parte entera, y a diferencia de la parte entera, el orden obtenido es el ms relevante primero, segn veremos en el ejemplo numrico que se muestra a continuacin. Debe tenerse presente que este proceso no siempre termina, por lo que se deja de calcular cuando se ha conseguido la precisin deseada. Ejemplo Numrico 4: Convertir 0.75010 a binario 0.750*2 0.500*2 0.75010 = 1.500 = 1.000 = 0.112 1 con resto 0.500 1 con resto 0.000 = 1*2-1 + 1*2-2 = 0.50 + 0.25 = 0.7510

Resultado exacto:

Ejemplo Numrico 5: Convertir 0.33310 a binario 0.333*2 0.666*2 0.332*2 0.664*2 0.328*2 0.656*2 0.312*2 0.624*2 0.248*2 0.496*2 0.992*2 0.984*2 0.968*2 etc... Resultado aproximado: 0.33310 = 0.01010101001112 = 0.332885742187510 = 0.666 = 1.332 = 0.664 = 1.328 = 0.656 = 1.312 = 0.624 = 1.248 = 0.496 = 0.992 = 1.984 = 1.968 = 1.936 0 con resto 0.666 1 con resto 0.332 0 con resto 0.664 1 con resto 0.328 0 con resto 0.656 1 con resto 0.312 0 con resto 0.624 1 con resto 0.248 0 con resto 0.496 0 con resto 0.992 1 con resto 0.984 1 con resto 0.968 1 con resto 0.936

6 de 10 Ejemplo Numrico 6: Convertir 0.110 a binario 0.1*2 0.2*2 0.4*2 0.8*2 0.6*2 = 0.2 = 0.4 = 0.8 = 1.6 = 1.2 0 con resto 0.2 0 con resto 0.4 0 con resto 0.8 1 con resto 0.6 1 con resto 0.2

tenemos nuevamente la situacin inicial y la serie se repetir indefinidamente. Este problema ocurre muy frecuentemente con nmeros decimales, dando origen a problemas de precisin en los clculos. Para superar esta dificultad se usa una codificacin binaria modificada que se conoce como "binario codificado decimal" o BCD. En el sistema BCD, se usa cuatro bits para representar cada dgito decimal, por lo que solamente se usan los nmeros binarios del 0 al 9 y se descarta el uso de la A a la F. Ejemplo Numrico 7: Convertir 257410 a BCD 2 5 7 4 0010 0101 0111 0100 257410 = 0010010101110100BCD Otras Representaciones Fraccionarias Adems de la forma recin vista, otra forma simple de representar nmeros fraccionarios es la conocida como Punto Fijo. En este esquema se asume que cada nmero dispone de una cantidad fija predefinida de decimales, 2, 4 o ms. Los dispositivos de suma o resta no se ven afectados por esto ya que la alineacin del punto decimal ocurre en forma natural. Se debe cuidar que los resultados de multiplicaciones y divisiones estn alineados adecuadamente. Cuando se debe representar nmeros que varan en rangos ms amplios, como en el campo cientfico, se recurre a representaciones conocidas como de Punto Flotante, de las que existen varios estndares, los ms usados son los propuestos por la IEEE 754-2008. ATENCIN: si no se indica el formato de representacin no se puede asegurar a priori de qu valor se trata. As 01110100 = un milln ciento diez mil cien 01110100 = setenta y cuatro 01110100 = ciento dieciseis considerndolo un decimal considerndolo BCD considerndolo binario

Por lo general se acepta que si no hay indicacin especial se trata de nmeros decimales. OBSERVACIN IMPORTANTE: cuando como humanos efectuamos operaciones aritmticas el tamao de los nmeros no suele ser un problema, ya que con tiempo y paciencia se puede operar nmeros de muchos dgitos. En los sistemas electrnicos (y mecnicos) esto no es as, ya que desde que se define las caractersticas de una CPU, sistema operativo y aplicacin es inevitable introducir un tamao mximo y una precisin. Cualquier operacin que supere este mximo dar origen a un error en el clculo, el que en sistemas bien programados indicar un error de fuera de rango, tambin conocido como OVERFLOW.

7 de 10 Aritmtica Binaria (ATENCIN: todos los nmeros en base 2) SUMA: 0+0=0 0+1=1 1+0=1 1 + 1 = 0 + CARRY

01 +01 10
Este es el carry RESTA: 00=0 0 1 = 1 - BORROW 10=1 11=0 Este es el borrow

10 -01 01
MULTIPLICACIN: 0*0=0 0*1=0 1*0=0 1*1=1 DIVISIN: 0/0=? 0/1=0 1/0= 1/1=1

8 de 10 Representacin de Nmeros Negativos Una forma de dar cuenta del signo de los nmeros es asociar a cada nmero una marca de signo y agregar una lgica equivalente a la que usamos cuando hacemos operaciones aritmticas en forma manual. Esto suele ser bastante imprctico en sistemas computacionales. Otra forma es cambiar la representacin por el complemento del nmero (cambiando ceros por unos y unos por ceros). El simple complemento tampoco tiene propiedades interesantes cuando se debe integrar en sistema computacionales. En general se prefiere la representacin de nmeros binarios en complemento de 2 porque facilita las operaciones de suma y resta y la identificacin del signo es trivial. La forma de calcular el complemento de 2 es cambiar todos los ceros por unos y todos los unos por ceros y a este valor sumarle uno. Ejemplo Numrico 8: Convertir 1310 = 000011012 a su valor negativo en complemento de 2 00001101 11110010 +1 = 11110011 = 243 !!! Vemos que el complemento de 2 de 1310 en un campo de 8 bits, que esperamos sea -13 10, al convertirlo directamente a decimal nos da el valor 243 10. La razn de esto es porque no tomamos en cuenta que la representacin es en complemento de 2. Siempre debe saberse de antemano si estamos trabajando con nmeros binarios sin signo o con signo. Siempre debemos saber y declarar el formato en que estamos representando los nmeros. Para comprender mejor la formacin de los nmeros en complemento de 2 veamos una pequea lista: Decimal sin signo 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 Binario en Antes de complemento complemento de 2 0111 1001 0110 1010 0101 1011 0100 1100 0011 1101 0010 1110 0001 1111 0000 0000 1111 0001 1110 0010 1101 0011 1100 0100 1011 0101 1010 0110 1001 0111 1000 1000 Decimal sin signo 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8

Observamos que dado un cierto campo binario de 4 bits de largo, la capacidad de representar valores se reparte entre los valores positivos y negativos. Si al interpretar el nmero sin signo el rango era desde 0 10 hasta 1510 , ahora el rango incluye desde -8 10 hasta +710. Con un campo de 8 bits, el que sin signo abarca desde 0 10 hasta 25510, la representacin con signo en complemento de 2 abarca desde -12810 hasta +12710.

9 de 10 Otra propiedad interesante que no se da en otras representaciones con signo -- es que el cero es nico. Para identificar el signo basta mirar el bit ms significativo. Si es cero, el nmero es positivo, si es uno el nmero es negativo. Si estamos trabajando en un sistema con nmeros de 4 bits de largo en complemento de 2 y queremos convertirlo a 8 bits de largo se debe hacer lo que se conoce como extensin del signo: los 4 nuevos bits agregados se rellenan con el bit indicador de signo. Ejemplo Numrico 9: Convertir 0101 y 1011, ambos binarios en complemento de 2, a un campo de 8 bits de largo 0101 00000101 1011 11111011 Conversin fcil a complemento de 2 Una regla que facilita la conversin es recorrer el nmero de derecha a izquierda copiando todos los ceros y el primer uno encontrados. A partir de ese momento se invierten todos los dems dgitos. Ejemplo numrico 10: Convertir los nmeros binarios 00110100100 y 11100010 a complemento de 2 en 16 bits a) b) 00110100 100 11001011 100 1111111001011100 111000 10 000111 10 0000000000011110

Aritmtica en complemento de 2 Debe tenerse presente que al trabajar con nmeros que estn sujetos a un campo de largo predefinido existe la posibilidad de que el resultado de las operaciones se salga del rango permitido. Para sumar dos nmeros en complemento de 2 simplemente se suman usando la definicin de suma vista anteriormente. Para restar dos nmeros en complemento de 2, se cambia el signo del sustraendo aplicando una conversin de complemento de 2 y se suman. Si se produce carry este se descarta y no es parte del resultado. Al sumar dos nmeros positivos, el resultado se aleja de cero pudiendo dar overflow. Al sumar dos nmeros negativos, el resultado se aleja de cero pudiendo dar overflow. Al sumar un positivo con un negativo el resultado se acerca a cero y no dar overflow. Regla para determinar si hay overflow como resultado de la suma: Si el carry aplicado a los dos bits ms significativos es igual al carry final de la suma el resultado es correcto y no hay overflow. En caso contrario el resultado es errneo debido a que se sali del rango mximo representable en ese tamao de campo. Ejemplo numrico 11: Sumas de complementos de 2 en campo de 4 bits. Los carry se muestran en rojo. 3 +4 7 RESULTADO:

000 0011 +0100 00111

Son iguales => no hay overflow. Correcto

10 de 10

4 +5 9 RESULTADO:

100 0100 +0101 01001


-7

Son distintos => hay overflow. Incorrecto

-3 + -5 -8 RESULTADO:

111 1101 +1011 11000


-8 000

Son iguales => no hay overflow. Correcto

-4 + -5 -9 RESULTADO:

1100 +1011 10111


7 111 0101

Son distintos => hay overflow. Incorrecto

5 + -5 0 RESULTADO:

+1011 10000
0

Son iguales => no hay overflow. Correcto

Observacin muy Importante En esta clase hemos visto varios sistemas numricos y conversiones entre ellos. Algo de aritmtica binaria elemental y formas de representar valores numricos con diferentes codificaciones. En este contexto, las diferentes representaciones dan cuenta de un valor numrico, y las operaciones efectuadas obtienen resultados aritmticos. No debe confundirse esto con el uso que se har en las clases siguientes en que, por comodidad, los caracteres "0" y "1" generalmente no sern representativos de valores numricos, perdiendo su significado aritmtico tradicional. En este caso debe considerrselos asimilados a conceptos tales como Verdadero-Falso (V-F) (TRUE-FALSE o T-F), Si-No (S-N) (YES-NO o Y-N), HIGH-LOW, Blanco-Negro, etc. Cuando se trabaja en sistemas digitales es muy importante tener claro en todo momento qu interpretacin se est haciendo de los caracteres 0 y 1.

Das könnte Ihnen auch gefallen