Gracias a
Iván Matvéevich Vinográdov

Algoritmo para el Cambio de Base Numérica
José Enrique González Cornejo
Junio 2014

Indice

 

 

Aplicación Algoritmo e Interfaz
  Decimal  Base  
Ingrese Número    
    


Introducción

Se presenta un algoritmo que utiliza DocIRS, para transformar números de base decimal a base binaria. La importancia de trabajar con numeración binaria, es  para hacer uso directo del almacenamiento primario de datos, el cual se utiliza para almacenar bit (Binary digit) como unidad mínima de información.

Al guardar un bit en un dispositivo de almacenamiento digital, se trabaja con la dirección de magnetización u otras marcas (incluso cuánticas) binarias de esos núcleos. Es decir, solo cuenta con dos estados, uno que se dice que está encendido ON cuando  el núcleo queda marcado en una dirección determinada, y en caso contrario se marca en OFF. Estas asignaciones son apropiadas para construir un sistema de numeración binaria de almacenamiento, porque permite utilizar los dígitos binarios 1 y 0 para representar datos.

Partiendo desde esta idea central, se expone a continuación la transformación  de un numero decimal hacia su equivalente binario u otra base digital que se elija. El algoritmo para cambiar de base numérica presentado, es simple y más intuitivo que  el algoritmo de división por la base y residuo.  De igual modo se muestran dos ejemplos, - (Ver Tabla1 y Tabla2)-, de ese clásico procedimiento que está basado en el Algoritmo de Euclides, como así mismo su javascript asociado.

El articulo se inicia con una aplicación del algoritmo a través de una interfaz, donde el lector puede ingresar un numero natural cualquiera  entre 1 y 999999999, seleccionar la base que desea desde el listbox y ejecutar para obtener el  equivalente  y  la sumatoria de coeficientes multiplicados por potencias que señalan el concepto de base.

Se incluye el algoritmo en una aplicación con una simple función escrita en javascript, la cual  se puede ejecutar directamente en  browser (Explorer, Chrome, FF, Opera, Safari, etc..).

Nótese que con la siguiente función javascript que contiene un sólo comando, se obtiene directamente el cambio de base:

function dec2bin(dec)
{
   return (dec >>> 0).toString(base);
}


Donde el parámetro dec es el numero decimal ingresado y base es las base requerida. Sin embargo, en el presente artículo se desea mostrar el desarrollo del algoritmo matemático para el cambio de base numérica.


Algoritmo DocIRS

Utilizando potencias y aproximando el número dado, - según nuestra opinión- se comprende mejor  la transformación. Algunos matemáticos de la Teoría de Números, lo aproximan al Algoritmo LSBGCD (Left-Shift Binary Algorithm), nombre que realmente impresiona, pero en realidad es muy simple.

La aproximación por potencias de la base es más difícil describirlo formalmente, pero conceptualmente más didáctico.  En efecto, el cambio de base se realiza con potencias y los coeficientes consecutivos del 0 hasta la base-1. Por ejemplo, para la base 2  se  utiliza el conjunto C2 = {0,1} de coeficientes, para la base 3 el conjunto C3={0,1,2}, ...,...  y base 9 los coeficientes C9 = {0,1,2,3,4,5,6,7,8}

Por ejemplo si quisiéramos expresar números como 13 o 28 o 101 en su equivalente binario entonces:

13=1*23 + 1*22 + 0*21 + 1*20 <=> 11012
28=1*24 + 1*23 + 1*22 + 0*21+0*20<=>111002
101=1*26+1*25+0*24+0*23+1*22+0*21+1*20 <=>11001012

Entonces para determinar el equivalente binario por ejemplo, buscamos una potencia 2n , que cuando supere el número Natural dado, tomamos la potencia anterior y determinamos la diferencia o residuo. El exponente encontrado nos determina la serie hasta el número de potencias de 2 que irán adicionándose hasta que el exponente sea 0.
Cada una de estas potencias, acompañada por uno de los coeficientes de C= {0,1}, a fin de cuadrar la suma de la serie igual al numero dado.
 

Sea s ∈ N el número que deseamos transformar a binario, donde 2n<= s < 2n+1  => los exponentes de 2 serán entonces K={0,1,...,n} .
Donde   s = Σ ci·2k  , con k=0,1,2,…n , y donde cada ci ∈ {0,1}

Por ejemplo, transformemos a base 2 el número 9

23<= 9 < 24 => Seleccionamos la potencia 2= 8 , por tanto nos falta 1 para completar 9. Es decir, la potencia  2= 1

Por tanto la serie para completar es:  9 = 1*2+ 0*2+  0*2+ 1*20   y su equivalente binario los coeficientes 1001


Algoritmo función javascript

//Algoritmo DocIRS

function Decimal_Binario(sNumero)
{
var base=2;
var sTope;
var sTopeMax;
var sCoeficiente=new Array() ;
var sResiduo=-1;
var mm=0;
while (sResiduo!=0)
{
       for(var i=0;i<=100;i++)
      {
              if(Math.pow(base, i)>sNumero)
               {
                 sTope=i-1;
                sResiduo=sNumero-Math.pow(base, sTope);
                break;
               }
       }

if(mm==0){sTopeMax=sTope}
sCoeficiente[sTope]=1
 for(var j=0;j<sTope;j++)
 {
   sCoeficiente[j]=0
 }
    if (sResiduo==0){break}
    sNumero=sResiduo
    mm=mm+1

 numBin=""
  for(var j=0;j<=sTopeMax;j++)
 {
   numBin=numBin + sCoeficiente[j]
  }
 return numBin.split("").reverse().join("");
}

 


Método de Euclides (División/Residuo)

Comencemos mostrando ejemplos del método de Euclides, para obtener el equivalente binario (u otras bases) de un número Natural:

137

2
1 68 2
0 34 2
0 17 2
1 8 2
0 4 2
0 2 2
0 1  
Tabla 1

El ejemplo de la Tabla 1 muestra el método de Euclides de ir dividiendo sistemáticamente por 2 y obteniendo el cuociente y residuo. Hasta que el residuo es menor que el divisor. Nótese que la serie de residuos constituye el equivalente binario.  137 <=> 10010002

185

3
2 61 3
1 20 3
2 6 3
0 2  
Tabla 2

El ejemplo de la Tabla 2 se aplica el mismo método pero en base 3, de modo de ir dividiendo sistemáticamente por 3 y obteniendo el cuociente y residuo. Hasta que el residuo es menor que el divisor. Nótese que la serie de residuos constituye el equivalente en base 3 de  185 <=> 21203

Es decir, mecánicamente este algoritmo es rápido y efectivo, pero no explicita que las suma de las potencias de la base multiplicado por los coeficientes corresponde al numero. Sin embargo, requiere un poco de estudio de Teoría de los Números para su buena comprensión.

// Método División/Residuo para bases de 2 a 9
 

function Decimal_Base(sNumero,base)
{
 if (base<2 || base>9){return}
 var auxiliar=sNumero;
 var numCambiado="";
 var kk=0;
 var sCoeficiente=new Array();
 var sGuardaCoeficientes="";
while(true)
{
 auxiliar = parseInt(auxiliar);
 var sQuociente=parseInt(auxiliar/base);
 var sResiduo=auxiliar-(base*sQuociente);
 kk=kk+1;
 sCoeficiente[kk]=sResiduo;
 auxiliar=sQuociente;

  if (auxiliar<base)
  {
   kk=kk+1;
   sCoeficiente[kk]=auxiliar;
    for(var i=1;i<=kk;i++)
    {
     sGuardaCoeficientes=sGuardaCoeficientes + sCoeficiente[i];
    }
   break;
  }
}
return sGuardaCoeficientes;
}

 


Artículos Relacionados
 
Logo DocIRS : Grafo conexo definido como árbol
Descripción del Diseño y Construción Gráfica con Funciones
¿Cómo entender el Teorema de Bayes en forma simple?
Análisis de una función logarítmica asintótica en los Reales
Logit: Función de distribución dicotómica para el Scoring
Geometrías Cualitativas
El Profesor Josegonzky resuelve ganar al hipnotizador
Modelo de estimación del factor Fc ~ Acerca de variables de entorno
El Problema de la Ruta Óptima para Visitar Clientes (Simulador y Matrices)
Modelo Insumo-Producto, Costeo y Arquitectura de Negocios
Algoritmo Indicadores PMO
Fundamentos de los Lenguajes Estructurados.
Estimación de Precios de los Servicios-Productos DocIRS, Bajo el Modelo SAAS 
Complemento de Conceptos Matemáticos ~ Mínimos Cuadrados
Complemento de Conceptos Matemáticos ~ Regresión Múltiple
Complemento de Conceptos Matemáticos ~ Distancia de un Punto a una Recta
Descripción Algoritmo de Distribución Aleatoria de Suma 1
Algoritmo en Acción ~ Herramienta de Distribución Aleatoria de Suma 1
Por Tramos: Simulación Aleatoria de Algoritmo DocIRS para la Ruta Optima
Por Permutaciones: Simulación Aleatoria de Algoritmo DocIRS para la Ruta Optima
Ejemplo Simple Permutaciones para la Ruta Optima
Descripción Algoritmo Cuadrados Mágicos Impares
Aplicación MagicoDocIRS v1.0 ~ Algoritmo Cuadrados Mágicos Impares
Breve explicación Video Función de Producción DocIRS