All Your Base

All Your Base

Difícil

Introdução

Você acaba de ser contratado como professor de matemática. Sua primeira semana correu bem, mas tem algo errado na segunda semana. O problema é que todas as respostas dos seus alunos estão erradas! Por sorte, seus conhecimentos de matemática permitiram que você identificasse o problema: as respostas dos alunos estão certas, mas todas estão na base 2 (binária)! Incrivelmente, a cada semana os alunos usam uma base diferente. Para ajudar você a verificar rapidamente as respostas dos alunos, você vai construir uma ferramenta para converter entre bases.

Instruções

Converta uma sequência de dígitos em uma base, que representa um número, em uma sequência de dígitos em outra base, que representa o mesmo número.

Note

Tente implementar a conversão por conta própria. Não use outra coisa para fazer a conversão no seu lugar.

Sobre a notação posicional

Na notação posicional, um número na base b pode ser entendido como uma combinação linear de potências de b.

O número 42, na base 10, significa:

(4 × 10¹) + (2 × 10⁰)

O número 101010, na base 2, significa:

(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)

O número 1120, na base 3, significa:

(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)

Sim. Esses três números acima são exatamente o mesmo. Parabéns!

Registradores

Registrador Uso Tipo Descrição
$a0 entrada inteiro número de dígitos de entrada
$a1 entrada inteiro base dos dígitos de entrada
$a2 entrada inteiro base dos dígitos de saída
$a3 entrada/saída endereço array sobrescrevível de palavras de dígitos
$v0 saída inteiro número de dígitos de saída, -1 se a entrada for inválida
$t0-9 temporário qualquer usado para armazenamento temporário
Editar via GitHub O link abre em uma nova janela ou aba
MIPS Assembly Exercism

Tudo pronto para começar All Your Base?

Crie sua conta no Exercism para aprender e dominar MIPS Assembly com 70 exercícios e mentoria humana de verdade, tudo de graça.