Acabaste de ser contratado como professor de matemática. A tua primeira semana correu bem, mas há algo de estranho na segunda. O problema é que todas as respostas dadas pelos teus alunos estão erradas! Felizmente, os teus conhecimentos de matemática permitiram-te identificar o problema: as respostas dos alunos estão corretas, mas estão todas na base 2 (binário)! Curiosamente, verifica-se que, a cada semana, os alunos usam uma base diferente. Para te ajudar a verificar rapidamente as respostas dos alunos, vais construir uma ferramenta que converte entre bases.
Converte uma sequência de algarismos numa base, que representa um número, numa sequência de algarismos noutra base, que representa o mesmo número.
Tenta ser tu a implementar a conversão. Não uses outra coisa para fazer a conversão por ti.
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. Aqueles três números acima são exatamente o mesmo número. Parabéns!
| Registo | Utilização | Tipo | Descrição |
|---|---|---|---|
$a0 |
valor de entrada | inteiro | número de algarismos de entrada |
$a1 |
valor de entrada | inteiro | base dos algarismos de entrada |
$a2 |
valor de entrada | inteiro | base dos algarismos de saída |
$a3 |
valor de entrada/saída | endereço | array de palavras de algarismos que pode ser sobrescrito |
$v0 |
valor de saída | inteiro | número de algarismos de saída, -1 se o valor de entrada for inválido |
$t0-9 |
temporário | qualquer | usado para armazenamento temporário |
Inscreve-te no Exercism para aprenderes e dominares MIPS Assembly com 70 exercícios, e mentoria humana real, tudo grátis.