Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A conversion de bases nos referimos a cambiar Una vez hechas las operaciones necesarias ya
la cantidad de caracteres que tiene el sistema, tenemos el numero en binario, son los numeros
por ejemplo, ustede esta acostumbrado a usar el dados de abajo a arriba en la parte de modulo, es
sistema decimal, el cual consiste en 10 caracteres 10111.
distintos (0,1,2,3,4,5,6,7,8,9) con el cual se cons- Aunque este ejemplo es solo para base 10 a base 2,
truye todos los numeros conocidos, pero como puede hacerse de base 10 a base N.
sabemos las computadoras se a dicho que trabajan
con sistema binario, esto se refiere que con solo Pero como lo cambiamos de base N a base 10?,
dos caracteres (0,1) construye todos los numeros esto es mas sencillo solo debemos multiplicar un
existentes. digito por N Posi ci on y sumar el sigguiente digito
multiplicado por N Posi ci on , tomomes de ejemplo
Existen distintos metodos para poder hacer una el numero que encontramos en base 2 (10111) y
conversion de bases uno de ellos y con el que se convirtamoslo en base 10, esto mos queda como:
basa este programa es el siguiente: 1x24 + 0x23 + 1x22 + 1x21 + 1x20 = 23
De base 10 a una cierta base N primero del numero
de base 10 se saca el modulo de la base N y dado Ya sabemos como comvertir de base decimal a
a que el modulo solo te da el residuo entonces te una base N con numeros enteros, pero ahora debe-
dara un numero entre 0 y N. Por ejemplo: mos hacerlo con numeros fraccionarios. Para esto
10 mod 2=0 y 9 mod 2=1 se multipla por N y se obtendra una parte entera a
y una parte fraccionaria b, quitamos la parte entera
Despue dividimos el numero en sistema decimal y multiplicamos la parte b por N, esto lo hacemos
entre N y guardamos la parte entera, y volvemos a las veces que sea necesarias o hasta que b=0, pon-
repetir sacamos el modulo de la parte entera que gamos un ejemplo, usemos el numero 0.6 y convir-
nos dio en la division con N y lo guardamos y luego tamoslo a base 8.
volvemos a dividir y guardar, asi sucesivamente
hasta que el resultado de la division sea 0, ponga-
mos un ejemplo: En la siguiente tabla se muestra
el procedimiento explicado con N=2 y el numero
en base 10= 23
1
FCFM 2023 UAdeC
2
FCFM 2023 UAdeC
3
FCFM 2023 UAdeC
4
FCFM 2023 UAdeC
Este segundo ciclo tambien sigue el mismo algo- en C la parte sin el signo, primero vemos si j es me-
ritmo que el de la funcion decimal_bin solamente nor al numero de digitos que tiene el numero y si
que como se multiplica por ocho hay ocho casos es menor entonces guardamos el digito de la posi-
distintos despues de hacer esta multiplicacion, que cion j en C y le sumamos una posicion a j y repeti-
van que la parte entera sea desde 0 a 7 en los if se mos hasta terminar con todo el numero, al final a
observa a que cada caso corresponde y se agrega el m le asignamos en numero si el signo.
respectivo entero a la parte fraccionaria del nume-
ro octal y se le quita a la parte decimal este entero Conversion de bases.py
para solo tener la parte fraccionaria para seguir ite-
rando tambien teniendo un limite de 25 iteracio- def bin_decimal ( m ):
nes, al final igual se define su signo con la variable N =0
s y se devuelve el valor convertido a octal. i =0
M=""
C=""
2.3. Binario a decimal
J =0
s =0
Conversion de bases.py
if m [0]== " -" :
s =1
def bin_decimal ( m ):
j =1
N =0
while j < len ( m ):
i =0
C += m [ j ]
M=""
j +=1
C=""
m=C
J =0
s =0
while i < len ( m ):
if m [ i ]== " . " and
if m [0]== " -" :
( m [ i +1]== " 1 " or
s =1
m [ i +1]== " 0 " ):
j =1
j = i +1
while j < len ( m ):
J=i
C += m [ j ]
while j < len ( m ):
j +=1
M += m [ j ]
m=C
j +=1
i +=1
i = len ( m )
Primero definimos la nueva funcion, esta tendra
if m [ J ]== " . " :
el nombre bin_decimal y recibira como dato un
i=J
string m que sera otrogado por el usuario, y defini-
mos las bariables, N sera la variable donde se guar-
dara el numero convertido a base decimal, i sera
una variable para iterar, en M se guardara la parte El primer while es para poder saber si tiene parte
fraccionaria en caso de tenerla, C sera utilizado y fraccionaria, si i es menor al numero de digitos en-
explicado e el primer while, por ultimo la variable J tramos l ciclo y preguntamos si m en la posicion i
sera usada como apuntador a la posicion en la que es un punto y si lo es si el siguiente numero es 1 o
este ubicado el punto decimal en caso de tenerlo. 0, sino lo es ignoramos lo demas y sumamos 1 a i,
el primer if es para ver si tiene signo negativo en y volvemos a iterar hasta encontrar un punto deci-
el primer caracter, en caso de tenerlo s cambia su mal o recorrer todo el numero, si encontramos un
valor a 1 y se define la variable j=1 para iterar des- punto y el siguiente numero es 1 o 0 entonces defi-
pues del signo, en el primer while con ayuda de la nimos j como i+1 pra continuar iterando sin usar i,
variable C se quitara el signo negativo, guardando a su vez definimos J=i para guardar la posicion en la
5
FCFM 2023 UAdeC
que encontramos el punto, si j es menor al tamaño En el proximo while vamos a convertir la parte en-
del numero, entonces, a M vamos a ir guardando la tera a sistema decimal, si i es mayor a 0 entramos
parte fraccionaria digito a digito con la operacion en el ciclo, devido a la teoria ya vista a N se le de-
M+=m[j], sumamos 1 a j y volvemos a iterar hasta be sumar el digito multiplicado por 2 y elevarlo a
guardar toda la parte fraccionaria en M, por ultimo su posicion, para esto se usa el codigo N+=int(m[J-
al terminar los ciclos en i guardamos el tamaño de i])*2**(i-1) al valor en la posicion m[J-i]lo multpli-
m y si m en la posicion J hay un punto entonces a i camos por dos y lo elevamos a i-1 que seria su posi-
le guardamos el valor J. cion, luego a i le restamos 1 y si el numero siguiente
es distinto de 1 o 0 o . entonces tiene un digito no
Conversion de bases.py desado y damos el error, al salir del ciclo prepara-
mos las variables para convertir la parte fracciona-
def bin_decimal ( m ): ria a base 10 guardando en i la cantidad de digitos
N =0 en M y en j gurdamos -1 para poder hacer los calcu-
i =0 los.
M=""
C=""
J =0
s =0
if m [0]== " -" :
s =1
j =1
while j < len ( m ):
C += m [ j ]
j +=1
m=C
while i < len ( m ):
if m [ i ]== " . " and
( m [ i +1]== " 1 " or
m [ i +1]== " 0 " ):
j = i +1
J=i
while j < len ( m ):
M += m [ j ]
j +=1
i +=1
i = len ( m )
if m [ J ]== " . " :
i=J
while i >0:
N += int ( m [J - i ])*2**( i -1)
i -=1
if m [ i ]!= " 0 " and
m [ i ]!= " 1 " and m [ i ]!= " . " :
raise ValueError
( f " { n } ␣ NO ␣ ES ␣ UN
␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ ␣ NUMERO ␣ BINARIO " )
i = len ( M )
j = -1
6
FCFM 2023 UAdeC
if s ==1:
N *= -1
return N 7
FCFM 2023 UAdeC
8
FCFM 2023 UAdeC
3. Resultados
3.1. Ejemplo de decimal a binario con el codigo
11
FCFM 2023 UAdeC
..
.
Figura 4: Ejemplo de octal a decimal
12
FCFM 2023 UAdeC
4. Conclusiones
13