Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Explicacion Teorica
Explicacion Teorica
-La variable frase, es el número en base n fraccionario que vamos a insertar. Es un String el
cual vamos a tomar elemento por elemento y vamos a analizar tanto la parte decimal como
la fracción. Y lo vamos a dividir en dos vectores posición [0] para parte entera y posición [1]
para parte decimal.
Ejemplo:
Convertir “ABC.2AB” de base 16 a base 32
Parte entera:
-Las variables baseF y baseC (nombres arbitrarios) son enteros. Por un lado, baseF es muy
importante ya que nos indica de que base es actualmente el número que hemos insertado,
esto además nos ayuda para pasar la parte entera a decimal de la siguiente manera:
Hay un gran interés por obtener números decimales ya que son nuestra base intermedia o
universal. Por lo tanto, alojaremos cada número de la parte entera (convertido a decimal) en
una variable llamada num que es de tipo long.
num=2748;
La función Takephrase toma de la frase la parte entera, separa las letras o números y los
multiplica por baseF , luego los eleva al índex del vector como en el ejemplo mostrado para
obtener un numero de tipo long.
Por otro lado, la variable baseC es la base a la que queremos convertir y es igualmente
importante porque es el parámetro que luego le pasamos a nuestra función para obtener los
residuos entonces en este caso :
BaseC = 32;
vamos a recolectar todos los residuos o nódulos que nos de al dividirlo por 32 para eso
haremos ciclos
ciclo 1
modulo = 2748%32 = 28
nuevonumero = 2748/32 = 85
ciclo 2
modulo = 85%32 = 21
nuevonumero = 85/32 = 2
Parte Decimal:
Ahora analizamos la posición [1] del string (”.2AB”) y vamos a tomar de nuevo elemento
por elemento. De acuerdo a la teoría de números, no hay necesidad de invertir el array :
[2,A,B] = [2,10,11]
Ahora como se había planteado, necesitamos obtener un numero decimal, por lo tanto
vamos a tomar cada elemento del array y lo vamos a dividir por baseF = 16 elevado al index
+1 ya que según la teoría de sistemas numéricos debemos iniciar con la potencia 1 , luego
vamos a sumar todo
nn=0.166748047;
Obtuvimos un numero decimal el cual, como habíamos dicho nos sirve de base intermedia o
universal. Ahora este número (0.166748047) lo convertiremos a base 32 con el siguiente
algoritmo:
Haremos un do while que tome las partes enteras y tome las partes decimales con el fin de
autimatizar el resultado y guardar todas las partes enteras en un array. El ciclo se hará de tal
manera que cuando la parte decimal sea 0.0 se termine el proceso. Multiplicaremos cada
decimal por baseC =32;
Primera iteración:
Do{
R=nn*32;
R= 5.335937504;
ParteEntera= 5;
Arr.add(ParteEntera);
ParteDecimal =0.335937504;
nn= ParteDecimal;
}while(ParteDecimal>0.0);
Segunda iteración:
nn= 0.335937504;
Do{
R=nn*32;
R= 10.75000013;
ParteEntera= 10;
Arr.add(ParteEntera);
ParteDecimal =0.75000013;
nn= ParteDecimal;
}while(ParteDecimal>0.0);
Tercera iteración:
nn= 0. 75000013;
Do{
R=nn*32;
R= 24.00000416;
ParteEntera= 24;
Arr.add(ParteEntera);
ParteDecimal =0.00000416;
nn= ParteDecimal;
}while(ParteDecimal>0.0);
= 2LS.5AO