Sei sulla pagina 1di 3

ALGUNOS SUB-PROGRAMAS DE AYUDA PARA CONVERSIONES EN

SISTEMAS NUMERICOS
CONVERSION BASE 10 A BASE 2.- Convertir un numero en base 10 a un
numero en base 2, se puede hacer en base a divisiones sucesivas entre 2
(la nueva base), del numero a convertir. Los restos de las divisiones
formaran el numero en la nueva base, dispuestos en orden inverso al
obtenido.
// CONVERSION DE BASE 10 a base 2
procedimiento conversion_b10_b2(int n)
Int n,p,x,c
INICIO
p0:c0
Mientras (n>0)
x n MOD 2
// asigna a x el resto de la division
por 2
p p + x*(10^c) // componemos los restos en otro numero
cc+1
// se incrementa la potencia de 10
n n DIV 2
finMientras
Mostrar n, " base 10 convertido a base 2 es ", p
FIN
CONVERSION BASE 2 A BASE 10.- Convertir de base 2 a base 10, se
puede efectuar multiplicando cada digito por 2 elevado a un exponente
creciente que empieza en cero y acumulando dichos productos. Se
comienza por el digito menos significativo (el ultimo). En el programa
ejemplo que sigue, el primer Mientras verificara que el numero ledo si es
un numero binario, antes de proceder a convertir a base 10.
// CONVERSION DE BASE 2 a base 10
procedimiento conversion_b2_b10()
Int n, b, c, x, q, r
INICIO
r0
Mientras (r=0)
Mostrar "Digite un numero="
n LeerEnteroPQ(0,100000) // Leer un Numero
r VerificaNumeroBinario(n) // devuelve 1 si esta correcto
FinMientras
c0:q0
Mientras (n>0)
x n MOD 10
q q + x*(2^c)
potencia de 2
n n DIV 10
cc+1
finMientras
Mostrar n, " base 2
FIN

// se obtiene un digito
// cada digito se multiplica por una
// se elimina el ultimo digito
// se incrementa la potencia de 2
convertido a base 10 es ", q

La conversin de base B a base 10, es una extensin de la conversin base


2 a base 10, donde el 2 se reemplaza por B y se sigue el mismo proceso.
Solo es valido para bases 2, 3 ,4 , 9.
// CONVERSION DE BASE B a base 10
procedimiento conversion_bB_b10()
Int n, b, c, x, q, r
INICIO
Mostrar "Indique la base <2,9>"
b LeerEnteroPQ(2,9) // solo sera valido para bases 2 al 9
r0
// ahora leeremos un numero en dicha base
Mientras(r=0)
Mostrar "Digite un numero en la Base ", b
n LeerEnteroPQ(1,100000)
// lee el numero a convertir
r VerificaNumeroEnBaseB(n, b) // verifica que n este en Base
b
FinMientras
c0:q0
Mientras (n>0)
x n MOD 10
// se obtiene un digito
q q + x*(B^c) // cada digito se multiplica por una potencia
de B
n n DIV 10
// se elimina el ultimo digito
cc+1
// se incrementa la potencia de B
finMientras
Mostrar n, " base ", b, "convertido a base 10 es ", q
A veces se quiere tener nmeros dentro un intervalo determinado, luego se
puede tener un subprograma que lea nmeros y solo acepte los que estn
dentro el intervalo y que descarte los dems. El siguiente programa lee
nmeros en el rango P a Q.
// Subprograma que lee un entero dentro el intervalo P-Q
Funcion LeeEnteroPQ(P: Int, Q: Int)
Int X
INICIO
Hacer
Mostrar "Digite un numero en el intervalo
<P,Q>"
Leer X
Mientras (X < P o X > Q)
Devolver X
FIN
El subprograma que verifica si un nmero ledo es o no un nmero binario
es el siguiente, y lo que hace es buscar si algn digito del nmero ledo no
es ni 0 ni 1 (es mayor a 1).

// Subprograma que dado N, verifica si esta o no en BINARIO


Funcion VerificaNumeroBinario(N: Int)
int bb, D
INICIO
bb 0
Mientras(N>0)
D N mod 10 : N N / 10 // extraemos un digito en
D
Si D > 1
// si es mayor entonces es 2, 3, 4,
etc
Entonces bb 1 // hay un digito que no es 1 ni 0
FinSi
FinMientras
Si bb = 0
Entonces Devolver 1
// si esta en base 2, esta
correcto
Sino
Devolver 0
// no esta en base 2
Tambin se puede verificar si un nmero en cierta base B, efectivamente
tiene sus dgitos pertenecientes a dicha base.
// Subprograma que dado N y una Base B, verifica que N este en Base
B
Funcion VerificaNumeroEnBaseB(N: Int, B: Int)
int bb, D
INICIO
bb 0
Mientras(N>0)
D N mod 10 : N N / 10
Si D > B
// si hay digito mayor a la
base
Entonces bb 1
// hay un digito que no cumple
FinSi
FinMientras
Si bb = 0
Entonces Devolver 1
// si esta en base B, esta correcto
Sino
Devolver 0
// no esta en base B
FinSi
FIN