Conversão de bases

Conversão de bases

por Marcelo Queiroz -
Número de respostas: 0

Boa tarde, pessoal!

Como prometido, segue o código (no anexo) do conversor de base genérico que fizemos na aula do dia 23/3. Esse conversor depende de 3 entradas: um inteiro n, uma base de entrada e uma base de saída. A base de entrada determina a interpretação da entrada n codificada (assim n=321 com baseEntrada=7 será reinterpretado como soma=3*7**2+2*7+1=162), e a base de saída determinará a aparência do número no final (assim n=321 em baseEntrada=7 com baseSaída=2 será recodificado como 10100010, já que 162=1*2**7+1*2**5+1*2). Fiz umas mudanças pequenas para deixar a saída mais limpa. Observem que ele só funciona para bases <=10, onde os dígitos usados são os mesmos que os decimais (nada de hexadecimais com letras portanto...).

Esse código combina diversos mecanismos estudados: mecanismo da soma (montar números a partir dos dígitos), mecanismo do produto (obter potências das bases) e o mecanismo descascador de dígitos (usando resto e quociente de divisões inteiras por uma base). Assim ele é comparativamente mais complexo do que os conversores de binário para decimal ou de decimal para binário que aparecem nos exercícios propostos.

Uma mudança interessante como exercício pode ser transformar o código em uma função de 3 argumentos, e fazer ele retornar o número inteiro cuja representação decimal coincide com a saída recodificada: por exemplo, uma chamada da forma conversorDeBase(321,7,2) iria produzir como valor de retorno o inteiro 10100010 (dez milhões, cem mil e dez). Fácil? Difícil? Experimentem!

Bons estudos,

Marcelo