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.