33 votos

Cambiar un número entre bases arbitrarias

Como una introducción, sé cómo se representan los números, cómo hacerlo si me pueden calcular las potencias de la base, y luego se mueven entre la base $m$ base $10$ base $n$. Yo siento que esto es demasiado "torpe", sin embargo, y quisiera hacerlo de tal manera que se cumplan las siguientes condiciones:

  1. No hay necesidad de calcular las potencias de la base explícitamente
  2. No hay necesidad para el almacenamiento intermedio (es decir, sin la conversión a la base de diez necesario si la base de diez no es una de las bases)

Estoy bastante seguro de que las operaciones sólo se que me estrictamente necesario utilizar son el modulo, la división y la concatenación, pero me parece que no puede averiguar.

Alguna sugerencia?

35voto

Matt Puntos 2318

Deje $x$ ser un número. Entonces si $b$ es cualquier base, $x \% b$ ($x$ mod $b$) es el último dígito de la $x$'s base-$b$ de representación. Ahora enteros se dividen $x$ $b$ a amputar el último dígito.

Repita este procedimiento de los rendimientos de los dígitos de $x$ desde el menos significativo para la mayoría. Comienza la "pequeña final primera."

EDIT: Aquí está un ejemplo para aclarar las cosas.

Deje $x = 45$$b = 3$.

x   x mod 3
45    0
15    0                (integer divide x by 3) 
 5    2
 1    1

Vemos que $45 = 1200_3$. Leer hasta la última columna para obtener la base 3 de la expansión usted busca. Veamos.

$$1\cdot 3^3 + 2\cdot 3^2 + 0 + 0 = 27 + 18 = 45.$$

Espero que esto ayude.

29voto

Math Gems Puntos 14842

Puede realizar conversión de base directamente al representar la notación de la raíz en forma de horner (anidado). Trabajemos un ejemplo simplemente. Convertimos $\:1213_{\:6}\:$ de raíz $6$ $8$ de la raíz

$$ 1{\color{red}2}{\color{blue}1}{\color{orange}3}_{\:6}\ =\ ((1\cdot 6+{\color{red}2})\:6+{\color{blue}1})\:6 + {\color{orange}3}$$

Ahora realizar el cómputo de adentro hacia afuera en el radix $8$:

$$ 1\cdot 6+ {\color{red}2} = 10)\: 6 = 60) + {\color{blue}1}) = 61)\: 6 = 446) + {\color{orange}3} = 451$$

Por lo tanto, $\:1213_{\:\!6} = 451_{8}$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X