Está en la página 1de 12

Sistemas de numeracin y aritmtica binaria

Hctor Antonio Villa Martnez Programa de Ciencias de la Computacin Universidad de Sonora

Este reporte consta de tres secciones. Primero, la Seccin 1 presenta los sistemas de numeracin ms utilizados en el diseo de sistemas digitales. En seguida, la Seccin 2 muestra los principales mtodos para convertir nmeros de un sistema de numeracin a otro. Por ltimo, la Seccin 3 explica como se realizan las cuatro operaciones aritmticas bsicas (suma, resta, multiplicacin y divisin) en binario.

1.

Sistemas de numeracin

El sistema de numeracin de uso comn, conocido como sistema decimal o base 10, utiliza diez dgitos (0, 1, ..., 9) para representar nmeros. El sistema decimal es posicional porque el valor de un nmero se obtiene multiplicando cada dgito por la potencia de 10 que le corresponde a la posicin del dgito dentro del nmero. La potencia se encuentra asignando la posicin cero al dgito que est a la izquierda del punto decimal y luego numerando el resto de los dgitos, ascendentemente hacia la izquierda y descendentemente hacia la derecha. Asi el valor del nmero decimal 727.53 es: 727.53 = 7 102 + 2 101 + 7 100 + 5 101 + 3 102 = 700 + 20 + 7 + 0.5 + 0.03 = 727.53 De la misma forma se pueden representar nmeros en otros sistemas de numeracin. En el diseo de sistemas digitales los sistemas de numeracin 1

ms utilizados, adems del sistema decimal, son el sistema binario o base 2, el sistema octal o base 8 y el sistema hexadecimal o base 16. Cada uno de estos sistemas se presentar a continuacin. El sistema binario emplea solo dos dgitos, 0 y 1, para representar nmeros. Como la base del sistema es 2, cada dgito binario se multiplica por la potencia de 2 que le corresponde: 11001.0112 = 1 24 + 1 23 + 0 22 + 0 21 + 1 20 + 0 21 + 1 22 + 1 23 = 16 + 8 + 1 + 0.25 + 0.125 = 25.37510 Ntese como para evitar confusiones entre nmeros en bases distintas se acostumbra marcar la base como un subndice del nmero. El sistema octal, por otro lado, utiliza ocho dgitos, 0, 1, ..., 7, para representar nmeros y cada dgito octal se multiplica por la potencia de 8 que le toca: 142.48 = 1 82 + 4 81 + 2 80 + 4 81 = 64 + 32 + 2 + 0.5 = 98.510 Por ltimo, como el sistema hexadecimal necesita de diecisis dgitos, se utilizan los diez dgitos decimales para representar dgitos entre 0 y 9 y las primeras seis letras del alfabeto para los dgitos del 10 al 15. De esta forma, A representa 1010 , B representa 1110 , C representa 1210 , D representa 1310 , E representa 1410 y F representa 1510 . Parecido a los casos anteriores, cada dgito hexadecimal se multiplica por la potencia correspondiente de la base, en este caso 16: D6C.5AF16 = 13 162 + 6 161 + 12 160 + 5 161 + 10 162 + 15 163 = 3328 + 96 + 12 + 0.3125 + 0.0390625 + 0.00366210938 = 3436.3552246093810 Como un ejemplo adicional, el Cuadro 1 lista los primeros 32 nmeros enteros en base 10, 2, 8 y 16. 2

Cuadro 1: Los primeros 32 nmeros enteros en base 10, 2, 8 y 16. base 10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 base 2 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 base 8 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 base 16 0 1 2 3 4 5 6 7 8 9 A B C D E F base 10 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 base 2 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 base 8 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 base 16 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

2.

Conversin entre sistemas de numeracin

Esta seccin presenta los principales mtodos para convertir nmeros de una base a otra. Como el sistema decimal es el sistema de numeracin de uso comn, primero se presentan los mtodos para convertir de base 10 a otra base (Subseccin 2.1) y de otra base a base 10 (Subseccin 2.2). Despus se explica la conversin entre dos bases arbitrarias (Subseccin 2.3). Por ltimo, se muestra una forma rpida para convertir entre base 2 y bases 8 y 16 (Subseccin 2.4).

2.1.

De base 10 a otra base

La conversin de un nmero en base 10 a otra base, r, se realiza mediante dos procedimientos separados, uno para obtener la parte entera del nmero en base r y otro para obtener la parte fraccionaria. La parte entera del nmero en base r se obtiene dividiendo la parte entera del nmero decimal sucesivamente entre r, guardando en cada paso el residuo, y volviendo a dividir el cociente entre r. Esta divisin contina hasta que el cociente sea cero. En este momento, la parte entera del nmero en base r se forma considerando los residuos en el orden inverso en que se obtuvieron. Es decir, el dgito ms signicativo de la parte entera es el ltimo residuo que se gener y el dgito menos signicativo es el primer residuo. La parte fraccionaria del nmero en base r se obtiene multiplicando la parte fraccionaria del nmero decimal sucesivamente por r, guardando en cada paso la parte entera del resultado, y volviendo a multiplicar la parte fraccionaria del resultado por r. Esta multiplicacin contina hasta que la parte fraccionaria del resultado sea cero o se obtenga la precisin deseada. En este momento, la parte fraccionaria del nmero en base r se forma considerando los enteros en el mismo orden en que se obtuvieron. Como ejemplo considere convertir 26.375 de base 10 a base 2. La parte entera se convierte as: 26 2 cociente = 13, residuo = 0 (dgito menos signicativo) 13 2 cociente = 6, residuo = 1 6 2 cociente = 3, residuo = 0 3 2 cociente = 1, residuo = 1 1 2 cociente = 0, residuo = 1 (dgito mas signicativo) Y la parte fraccionaria as: 0.375 2 = 0.75 entero = 0 fraccin 0.75 (primer dgito fraccionario) 4

0.75 2 = 1.5 entero = 1 fraccin 0.5 0.5 2 = 1.0 entero = 1 fraccin 0.0 (ltimo dgito fraccionario) En conclusin, 26.37510 = 11010.0112 . En ocasiones nos encontramos con fracciones decimales que no se pueden representar en otras bases de manera exacta. Para estos casos es necesario denir una precisin o detener el proceso si la fraccin en base r es cclica. Un ejemplo de esta ltima situacin se genera al convertir 34.2 de base 10 a base 8. Primero se convierte la parte entera: 34 8 cociente = 4, residuo = 2 4 8 cociente = 0, residuo = 4 Y luego la parte fraccionaria: 0.2 8 = 1.6 entero = 1, fraccin 0.6 0.6 8 = 4.8 entero = 4, fraccin 0.8 0.8 8 = 6.4 entero = 6, fraccin 0.4 0.4 8 = 3.2 entero = 3, fraccin 0.2 0.2 8 = 1.6 entero = 1, fraccin 0.6 0.6 8 = 4.8 entero = 4, fraccin 0.8 En este momento nos podemos dar cuenta que la fraccin octal es cclica. Por lo tanto, 34.210 se puede representar como 42.14638 con 4 dgitos de precisin o ms precisamente como 42.14638 .

2.2.

De otra base a base 10

La conversin de nmeros de otra base a base 10 fue presentada informalmente en los ejemplos de la Seccin 1. Formalmente, para convertir un nmero en base r, formado por n dgitos enteros y m fraccionarios an1 an2 ...a1 a0 .b0 b1 ...bm2 bm1 , a base 10, se aplica la siguiente ecuacin: N = an1 rn1 + an2 rn2 + ... + a1 r1 + a0 r0 + b0 r1 + b1 r2 + ... + bm2 r(m1) + bm1 rm Donde N es el nmero en base 10. Como ejemplo, considere la conversin del nmero hexadecimal 25A.CC a base 10.

N = 2 162 + 5 161 + 10 160 + 12 161 + 12 162 = 512 + 80 + 10 + 0.75 + 0.046875 = 602.79687510

2.3.

Conversin de base r a base s

El mtodo ms sencillo para convertir un nmero de base r a base s es utilizar la base 10 como base intermedia. Esto es, el nmero original en base r se convierte a base 10 como se explic en la Seccin 2.2 y luego el nmero decimal se convierte a base s siguiendo el procedimiento visto en la Seccin 2.1.

2.4.

Conversin rpida entre base 2 y bases 8 y 16

Para el caso particular de convertir nmeros de base 2 a base 8 o 16 y viceversa, existen mtodos de conversin directos para evitar utilizar la base 10 como base intermedia. A continuacin se describen primero los mtodos de conversin entre base 2 y base 8, y en seguida los mtodos de conversin entre base 2 y base 16. Para convertir un nmero de base 2 a base 8 se sigue el siguiente procedimiento. Primero, si el nmero de dgitos en la parte entera o en la parte fraccionaria del nmero binario no es mltiplo de tres, se agregan ceros sucientes a la izquierda de la parte entera o a la derecha de la parte fraccionaria cuidando de no alterar el valor del nmero. Segundo, los dgitos del nmero binario se agrupan en bloques de tres dgitos. Finalmente, el nmero octal se obtiene cambiando cada bloque de tres dgitos binarios por un dgito octal de acuerdo al Cuadro 2. Como ejemplo, se muestra la conversin del nmero binario 1011.01 a octal. 1011.012 = 001011.010 Despus de agregar ceros a la izquierda y derecha. = 001 011 . 010 Despus de agrupar los dgitos binarios. = 13.28 Despus de cambiar los dgitos usando el Cuadro 2. La conversin de un nmero de base 8 a base 2 sigue el procedimiento inverso. Cada dgito octal se cambia por tres dgitos binarios de acuerdo al 6

Cuadro 2: Conversin entre base 2 y base 8. Binario 000 001 010 011 100 101 110 111 Octal 0 1 2 3 4 5 6 7

Cuadro 2. Por ejemplo, la conversin del nmero octal 242.52 a binario es como sigue. 242.528 = 010 100 010 . 101 010 Despus de cambiar los dgitos usando el Cuadro 2. = 10100010.101012 Despus de eliminar los ceros superuos. La conversin de base 2 a base 16 es similar a la conversin de base 2 a base 8 descrita arriba. Las nicas diferencias son que los bloques tienen cuatro bits binarios y que cada bloque se cambia por un dgito hexadecimal usando el Cuadro 3. En el ejemplo que sigue, se muestra la conversin del nmero binario 101110.01 a hexadecimal. 101110.012 = 00101110.0100 Despus de agregar los ceros necesarios. = 0010 1110 . 0100 Despus de agrupar los dgitos binarios. = 2E.416 Despus de cambiar los dgitos usando el Cuadro 3. Finalmente, para convertir un nmero de base 16 a base 2 cada dgito hexadecimal se sustituye por cuatro dgitos binarios de acuerdo al Cuadro 3. As, la conversin del nmero hexadecimal 72.E5C a binario es como se muestra a continuacin. 72.E5C16 = 0111 0010 . 1110 0101 1100 = 1110010.11100101112 Despus de cambiar los dgitos usando el Cuadro 3. Despus de eliminar los ceros superuos. 7

Cuadro 3: Conversin entre base 2 y base 16. Binario 0000 0001 0010 0011 0100 0101 0110 0111 Hexadecimal 0 1 2 3 4 5 6 7 Binario 1000 1001 1010 1011 1100 1101 1110 1111 Hexadecimal 8 9 A B C D E F

Cuadro 4: Suma de dos dgitos binarios. x 0 0 1 1 y 0 1 0 1 x+y 0 1 1 0 Acarreo 0 0 0 1

3.

Aritmtica binaria

En los sistemas digitales las operaciones aritmticas se realizan en binario porque es ms fcil disear circuitos digitales para realizar aritmtica binaria que aritmtica decimal. Estas operaciones aritmticas incluyen la suma (Seccin 3.1), resta (Seccin 3.2), multiplicacin (Seccin 3.3) y divisin (Seccin 3.4). Las operaciones se hacen del mismo modo que en el sistema decimal, pero debido a la sencillez del sistema binario, pueden hacerse algunas simplicaciones que facilitan la realizacin de las operaciones.

3.1.

Suma

La suma de dos dgitos binarios, x y y (ver Cuadro 4), involucra el concepto de acarreo (carry en ingls). El acarreo se presenta cuando se suma 1 + 1 cuyo resultado, 2 en decimal, se escribe con dos dgitos en binario (10). En este caso la suma es 0 y se pasa (o se acarrea) 1 a la siguiente columna. Como ejemplo considere la suma binaria de 11001 y 1101. 8

Cuadro 5: Resta de dos dgitos binarios. x y 0 0 0 1 1 0 1 1 xy 0 1 1 0 Prstamo 0 1 0 0

110010 acarreos 11001 + 1101 100110 Los acarreos, presentados en rojo, muestran si en la columna anterior hubo acarreo (valor de 1) o no (valor de 0).

3.2.

Resta

La resta de nmeros binarios es similar a la resta decimal que conocemos. Cuando al restar dos nmeros binarios nos encontramos con la operacin 0 1 se genera un prstamo de la siguiente columna (ver Cuadro 5). Al continuar con la siguiente columna hay que tomar en cuenta el prstamo, y si es necesario volver hacer un prstamo de la columna que sigue. Si el prstamo se propaga hasta la ltima columna entonces el resultado de la resta es un nmero negativo. La representacin en binario de nmeros negativos se presenta en [1]. Para una explicacin ms extensa del concepto de prstamo, consultar Roth [2, p. 11]. Como ejemplo considere la resta binaria de 111001 y 1011. 011100 prstamos 111001 + 1011 101110 Los prstamos, presentados en rojo, muestran si en la columna anterior hubo un prstamo (valor de 1) o no (valor de 0).

Cuadro 6: Multiplicacin de dos dgitos binarios. x 0 0 1 1 y 0 1 0 1 xy 0 0 0 1

3.3.

Multiplicacin

En la multiplicacin de nmeros binarios slo es necesario recordar la tabla de multiplicacin que se exhibe en el Cuadro 6. Como ejemplo se presenta la multiplicacin de 1111 por 1101. Ntese como para evitar sumas de varios dgitos binarios se hacen sumas parciales, denotadas en rojo, despus de cada dos nmeros generados. El producto nal se muestra en azul. 1111 1101 1111 Primer producto parcial 0000 Segundo producto parcial 01111 Primera suma parcial 1111 Tercer producto parcial 1001011 Segunda suma parcial 1111 Cuarto producto parcial 11000011 Producto nal

3.4.

Divisin

La divisin binaria es ms sencilla que la divisin decimal porque solo hay dos posibles valores para el cociente: 0 si el divisor es menor que el dividendo, y 1 en caso contrario. Como ejemplo a continuacin se muestra la divisin de 10010001 entre 1011.

10

1101 10010001 1011 1110 1011 1101 1011 10 Al nalizar la divisin, se obtiene que el cociente es 1101 y el resto o residuo es 10. 1011

11

Referencias
[1] Hctor Antonio Villa Martnez. Representacin de nmeros en binario. Technical report, Universidad de Sonora, Hermosillo, Sonora, 2008. [2] Charles H. Roth Jr. Fundamentos de diseo lgico. Thomson, Mxico, DF, quinta edition, 2005.

12

También podría gustarte