jueves, 14 de octubre de 2010

CONVERSIONES ENTRE NÚMEROS DE BASE DIFERENTE


La conversión entre números de distintas bases a un número decimal es, como ya vimos, bastante sencilla. Sólo debemos usar la fórmula que ya se describió. Pero ¿qué pasa si lo que queremos es convertir un número decimal a binario? ¿o a hexadecimal? ¿o a octal? Para realizar estas conversiones primero que nada, si el número tiene parte decimal, separamos la parte entera de la fracción decimal. La mejor forma de mostrar la conversión es a través de ejemplos. Veamos algunos:

Convertir a binario el número decimal 41: En el caso de querer convertir a números binarios lo que debemos hacer es realizar sucesivas divisiones del número a convertir entre dos hasta que lleguemos a un cociente de cero. Los restos de las divisiones representarán los dígitos desde el menos significativo (que será el primer resto) hasta el más significativo que será el resto de la última división cuando lleguemos al cociente cero. Entonces si el número es 41, al realizar la división entre dos obtendremos un cociente de 20 y un resto de 1. Es precisamente el resto quien indicará cuál es el valor del bit y en este caso este es el bit menos significativo. Luego haremos la operación nuevamente con el nuevo cociente que es el 20 y así sucesivamente hasta llegar al momento en que el cociente sea 0. Entonces, desde el principio:
  • 41 / 2 = 20 con resto 1 => El coeficiente el menos significativo será 1, digamos a0=1.
  • 20/2 = 10 con resto 0 => El coeficiente 1 será 0 => a1=0.
  • 10/2 = 5 con resto 0 => a2=0.
  • 5/2 = 2 con resto 1 => a3=1.
  • 2/2 = 1 con resto 0 => a4=0.
  • 1/2 = 0 con resto 1 => a5=1.
Por lo tanto:
(41)10 = (a5a4a3a2a1a0) = (101001)2
¿y si quisiéramos mostrar el número en octal y/ó hexadecimal, partiendo de que ya tenemos el número binario?, entonces sería:
(101001)2 = (51)8 = (29)16
Veamos otro ejemplo. Convertir el número decimal 161 a binario. Haríamos:
161804020105210
10000101

sabiendo que el primer bit es el menos significativo tendríamos:
(161)10 = (10100001)2
partiendo del binario, en octal y hexadecimal sería:
(10100001)2 = (A1)16 = (241)8
¿quieren revisar? OK:
(A1)16 = 10 x 161 + 1 x 160 = 160 + 1 = (161)10
(241)8 = 2 x 82 + 4 x 81 + 1 x 80 = 128 + 32 + 1 = (161)10
Ok, todo chévere. Pero ¿qué pasa si lo que quiero es convertir el número decimal directamente a octal o a hexadecimal? (quiero decir si NO tenemos el número binario). Por supuesto, ustedes podrían convertirlo a binario y luego a octal o hexadecimal. Soy de la política de que no importa cómo se llegue al resultado mientras éste sea el correcto a menos claro está de que se les digaexplícitamente que lo hagan de alguna forma en particular. En todo caso, la forma más rápida de hacerlo sería aplicando el método análogo a la conversión a binario sólo que cambiando el divisor a la base correspondiente. Si en binario es 2, en octal es 8, en hexadecimal es 16 en base 5 sería 5, etc. Procedamos con el mismo ejemplo anterior, con el número 161. Convirtámoslo a octal. Sería:
  • 161
  • 20 con resto 1
  • 2 con resto 4
  • 0 con resto 2
por lo tanto:
(161)10 = (241)8
ya que el primer resto es el dígito menos significativo. Y ¿qué tal a hexadecimal? Sería:
  • 161
  • 10 con resto 1
  • 0 con resto 10 que en hexadecimal es representado por A
entonces:
(161)10 = (A1)16
Ok. Si la base destino es 5, por ejemplo, llevarlo a binario no les serviría de nada. En este caso tendríamos que proceder obligatóriamente con el método explicado, en este caso siendo el divisor el número 5. Mismo ejemplo:
161
RESTO
32
1
6
2
1
1
0
1

Por lo tanto:
(161)10 = (1121)5
Revisemos:
(1121)5 = 1 x 53 + 1 x 52 + 2 x 51 + 1 x 50 = 125 + 25 + 10 + 1 = (161)10
CORRECTO!!! Veamos ahora el caso de que el número sea con decimales. Como ya se comentó, en estos casos es más conveniente separar la parte entera de la fracción decimal. La parte entera ya sabemos cómo resolverla. La fracción decimal se hace por un procedimiento similar pero la operación involucrada es la multiplicación y quien representará el dígito a colocar será la parte entera siendo el primer entero quien será la cifra más significativa. Por ejemplo si queremos convertir el número decimal 0,8125 a binario hacemos:
  • 0,8125 x 2 = 1 + 0,625
  • 0,625 x 2 = 1 + 0,25
  • 0,25 x 2 = 0 + 0,50
  • 0,50 x 2 = 1 + 0
así que
(0,812)10 = (0,1101)2
Revisemos:
(0,1101)2 = 1 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4 = 0,5 + 0,25 + 0 + 0,0625 = (0,8125)10
Excelente!!! Veamos un último ejemplo. Convertir el número decimal 48,407407407407 (407 periódico) al correspondiente en base 3. Para la parte entera:
  • 48
  • 16 con resto 0
  • 5 con resto 1
  • 1 con resto 2
  • 0 con resto 1
y para la fracción decimal:
  • 0,407407407407 x 3 = 1 + 0,2222222 periódico
  • 0,222222222222 x 3 = 0 + 0,6666666 periódico
  • 0,666666666666 x 3 = 2 + 0
Por lo tanto
(48,407407407407...)10 = (1210,102)3
Revísenlo.
NOTA: Dada la confusión presentada por los números en distintas bases y viendo el resultado en algunos alumnos que dio dar ejemplos de series en distintas bases, aquí les anexo una tabla con números en decimal y su correspondiente en otras bases. Observen como varían los símbolos usados en las distintas bases en incrementos de uno.
DecimalHexadecimalOctalBase 3Base 7
00000
11111
22222
333103
444114
555125
666206
7772110
88102211
991110012
10A1210113
11B1310214
12C1411015
13D1511116
14E1611220
15F1712021
16102012122
17112112223
18122220024
301E36101042
311F37101143
322040101244
64401002101121
69451052120126
70461062121130
71471072122131
Si por ejemplo tienen el número (12)3 y se le pide que le sumen 2, el resultado que van a obtener es el número en base 3 que está 2 posiciones adelante del (12)3 , en este caso el (21)3. Espero que esta tabla les sirva para comprender mejor los números en bases distintas. (4 + 6)7 = (13)7. Teniendo ya esto en cuenta, veamos como se realizan operaciones aritméticas en distintas bases.

No hay comentarios:

Publicar un comentario