Construa um algoritmo (phyton) para converter um número
de uma base
ou
16) para uma base
ou 16
.
Entradas : número X em uma base B1, bases B1 e B2
Saída : número
escrito na base B2
16) para uma base
Entradas : número X em uma base B1, bases B1 e B2
Saída : número
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 é: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:
- Receber o número
$X$, a base$B1$e a base$B2$. - Converter
$X$de$B1$para decimal. - Converter o número decimal para
$B2$. - 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)
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 ‘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)}”)
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.