AVERIGUAR EL VALOR DE UN NÚMERO DECIMAL (base 10) EN LAS BASES 2 A 9

Página inicial

 

 

 

La fórmula modelo para hacer cualquier conversión desde decimal (o base 10) a otra base (de 2 a 9) es:

 

{=SUMA(RESIDUO(ENTERO(celda/base^((FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1)))-1));base)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1))-1))}

 

donde:

 

Por ejemplo, para convertir el valor decimal (base 10) de la celda A1 a binario (base 2), la fórmula (usando de forma explícita la base a la que se desea convertir) sería:

 

{=SUMA(RESIDUO(ENTERO(A1/2^((FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1)))-1));2)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))-1))}

 

 

Esta fórmula de conversión tiene dos limitaciones. La primera de ellas resulta insoslayable: se trata de la precisión numérica máxima de Excel, la cual sabemos que es de 15 dígitos (artículo sobre este tema).

 

Esta precisión máxima de 15 dígitos significa, en lo que se refiere al tema que estamos tratando, que cualquier número devuelto por la fórmula cuya longitud sea superior a esos 15 dígitos verá convertidos en ceros automáticamente todos los dígitos situados a la derecha, a partir del dígito 16º inclusive. Esto no le impedirá a la fórmula realizar los cálculos (es decir, no provocará un error), pero los resultados mostrados podrán no ser correctos.

 

Esta primera limitación implica que los números más altos que puede devolver la fórmula con garantías en cada una de las bases 2 a 9 sean:

 

Base Número máximo en esa base Número en decimal
2 10000000000000002 32.768
3 10000000000000003 14.348.907
4 10000000000000004 1.073.741.824
5 10000000000000005 30.517.578.125
6 10000000000000006 470.184.984.576
7 10000000000000007 4.747.561.509.943
8 10000000000000008 35.184.372.088.832
9 10000000000000009 205.891.132.094.649

 

 

La segunda limitación que tiene la fórmula se debe a un fallo en la función RESIDUO de Excel que hace que se produzca el error #¡NUM! cuando el dividendo de la división que ha de procesar RESIDUO es ≥ 134.217.728 veces el divisor. Este error está reconocido por Microsoft y debidamente documentado. Este fallo se produce hasta la versión 2003 (a partir de 2007, el fallo sigue produciéndose pero a partir de 1.125.900.000.000, por lo que no representa ningún problema en lo que respecta al tema que estamos tratando).

 

La siguiente tabla es la anterior, añadiendo la limitación provocada por este error:

 

Base Número máximo en esa base Número en decimal Base * 134.217.728
2 10000000000000002 32.768 268.435.456
3 10000000000000003 14.348.907 402.653.184
4 10000000000000004 1.073.741.824 536.870.912
5 10000000000000005 30.517.578.125 671.088.640
6 10000000000000006 470.184.984.576 805.306.368
7 10000000000000007 4.747.561.509.943 939.524.096
8 10000000000000008 35.184.372.088.832 1.073.741.824
9 10000000000000009 205.891.132.094.649 1.207.959.552

   

Se puede comprobar cómo para las bases 2 y 3 la peor limitación de las dos posibles es la insoslayable, pero que a partir de la base 4 la peor limitación pasa a ser la segunda.

 

Esta segunda limitación provocada por el error de la función RESIDUO sí se pude soslayar, si se paga el precio de complicar aún más la fórmula al tener que prescindir de dicha función en ella, pasando a hacer el cálculo de los restos de las divisiones "a mano":

 

{=SUMA((ENTERO(celda/base^((FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1)))-1))-(ENTERO(ENTERO(celda/base^((FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1)))-1))/base)*base))*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1))-1))}

 

Así pues esta última fórmula es la recomendada en Excel 2003 para las bases 4 a 9, dejando la primera fórmula como la recomendada para las bases 2 y 3, aunque por supuesto la fórmula más "universal" es la más complicada de las dos, esto es, la última.

 

A partir de Excel 2007, la fórmula más sencilla debería funcionar sin problemas puesto que se ha subsanado (de forma parcial pero suficiente en lo que respecta a estas fórmulas) el problema de RESIDUO, por lo que no tiene sentido utilizar la más complicada.

 

 

Notas

 

 

 

Nota adicional:

 

Por alguna extraña razón, el buscador Google está mostrando esta página como primer resultado de la búsqueda "averiguar en qué base está un número" y algunas variantes de la misma.

 

El asunto, como es obvio, escapa por completo al tema de esta página, pero diré que la única forma de saber con toda seguridad a qué base pertenece un número es que se la haya puesto de forma explícita al final del mismo situando la base como subíndice: por ejemplo 1234567 es un número base 7, mientras que 1234569 es un número base 9. Si un número carece de su base, se sobreentiende que es de la base con la que trabajamos normalmente, esto es base 10.

Por exclusión es posible saber a qué base o bases no puede pertenecer un número: así, si un número contiene un 2 no puede ser binario, si contiene un 3 no puede ser de base 3 ni base 2, si contiene un 4 no puede ser de base 4 ni 3 ni 2, etcétera. Pero, sin embargo, un número compuesto exclusivamente por unos y ceros podría "ser", evidentemente, de base 2, pero también de cualquier otra base, salvo que se haga constar de forma explícita que dicha base es la 2: 11011012 es base 2 mientras que 11011019 es base 9; pero 1101101 puede ser de cualquier base aunque "tenga pinta" de ser base 2 y se sobreentienda que es base 10.
 

 

Página inicial