2010-09-13 14 views
1

Si j'ai une fonction f qui calcule élément m d'une séquence de chiffres dans la base b, est en général possible de écrire une fonction g qui calcule l'élément n de la séquence correspondante dans la base c?la détermination d'une gamme arbitraire de chiffres dans une base cible à partir d'une séquence et de base source

Par exemple artificiel, disons f produit binaire et g produit hexadécimal:

 
f(m) → 1, 0, 1, 0, 1, 0, 1, 0, ... 
g(n) → A, A, ... 

maintenant dire f est à base 5 et g est dans la base 6. Les bases don ne partage pas un facteur commun, ce qui signifie que le nombre de chiffres requis pour représenter un nombre de la base source dans la base cible est fractionnaire (⁄). Est-il possible de déterminer un chiffre de g en utilisant uniquement, par exemple, le correspondant cb chiffres de f?

noter qu'à partir de la formule du premier élément est la même que la réalisation de la conversion standard d'un nombre fractionnaire de b-c, mais je veux un élément quelconque de la séquence cible, de la même manière que Je peux récupérer un élément arbitraire de la source.

+0

Pouvez-vous donner un autre exemple? Par exemple, si 'f' dans la base 6 est' f (m) -> 5, 1, 3, 2', est 'g' dans la base 3' g (n) -> 2, 2, 1, 1, 2 , 1, 2'? Je ne peux pas vraiment imaginer quel est le comportement désiré ici. – mtrw

+0

Pour la base 6 à la base 3, chaque chiffre de 'f' produit deux chiffres de' g', donc 'g (n) -> 1 2 0 1 1 0 0 2'. –

+0

Désolé, mon exemple était trop simpliste. Que diriez-vous de 'g (n)' dans la base 4? Je ne peux pas savoir si vous voulez '3, 2' ou' 3, 3' pour les deux premiers résultats. – mtrw

Répondre

1

Je ne pense pas qu'il y ait un moyen plus simple que de diviser successivement par la base et de garder le reste. Bien sûr, diviser le nombre représenté dans une base arbitraire nécessiterait également une quantité linéaire de travail.

Disons que f représente le nombre N alors essentiellement

g(1) = N % c; 
g(2) = (N/c) % c; 
.... 
.... 
.... 

Il ne peut pas être nécessaire de calculer N explicitement, vous pouvez simplement le faire implicitement dans la base b.

+0

Donc la réponse, comme je le soupçonnais, est "pas exactement". –