Construa um algoritmo (phyton) para converter um número X de uma base B 1=(2,3,5,8,10 ou
16) para uma base B 2=(2,3,5,8,10 ou 16 ).
Entradas : número X em uma base B1, bases B1 e B2
Saída : número X escrito na base B2

Passo 1

Beleza, vamos lá! O que a gente precisa fazer aqui é criar um algoritmo em Python que consegue converter um número $X$ de uma base $B1$ para outra base $B2$. As bases que a gente vai trabalhar podem ser 2, 3, 5, 8, 10 ou 16. Pra resolver isso, vamos precisar entender como funcionam os sistemas de numeração e como converter números entre diferentes bases.

Passo 2

Primeiro, a gente precisa transformar o número $X$ que está na base $B1$ para a base decimal (base 10). Isso porque é mais fácil trabalhar a partir da base decimal para converter para outra base. Para isso, vamos usar a fórmula que converte um número de qualquer base para o decimal.

Passo 3

A fórmula para converter um número $X$ da base $B1$ para decimal é:
X
Onde:
  • $n$ é o número de dígitos em $X$.
  • $d_i$ é o dígito na posição $i$ de $X$.
Basicamente, cada dígito é multiplicado pela base elevada à potência correspondente à sua posição.

Passo 4

Depois de ter o número em decimal, o próximo passo é convertê-lo para a base $B2$. Para fazer isso, vamos usar o método de divisões sucessivas: dividimos o número decimal pela base $B2$ e vamos guardando os restos das divisões, que serão os dígitos do número na nova base.

Passo 5

Vamos colocar isso tudo em código Python! O algoritmo vai:
  1. Receber o número $X$, a base $B1$ e a base $B2$.
  2. Converter $X$ de $B1$ para decimal.
  3. Converter o número decimal para $B2$.
  4. Mostrar o resultado.

Passo 6

Aqui está o código em Python que faz essa conversão:
def converter_base(X, B1, B2):
    # Dicionário para números maiores que 10
    digitos = '0123456789ABCDEF'

Passo 7

X = X.upper() # Para garantir que as letras fiquem maiúsculas
decimal = 0
for i, digito in enumerate(X[::-1]):
valor = digitos.index(digito)
decimal += valor * (B1 ** i)

Passo 8

if decimal == 0:
return ‘0’
resultado = ‘’
while decimal > 0:
resto = decimal % B2
resultado = digitos[resto] + resultado
decimal = decimal // B2
return resultado

Exemplo de uso:

X = input("Digite o número X: ")
B1 = int(input("Digite a base B1: "))
B2 = int(input("Digite a base B2: “))
print(f"O número {X} na base {B2} é: {converter_base(X, B1, B2)}”)

Resposta

Prontinho! Com esse algoritmo, você consegue converter qualquer número $X$ de uma base $B1$ para outra base $B2$ entre 2, 3, 5, 8, 10 ou 16. Basta rodar o código e inserir os valores conforme solicitado.

Exercícios relacionados