Construa um algoritmo (phyton) para converter um número inteiro na base 2 para uma base qualquer b (dada pelo usuário).
Entrada : número binário
e base
Saída : número n convertido para a base b.
Entrada : número binário
Saída : número n convertido para a base b.
Passo 1
Beleza, vamos dar uma olhada no que a gente precisa fazer aqui! O exercício pede para criar um algoritmo em Python que converta um número inteiro da base 2 (binário) para qualquer outra base $ b $ que o usuário escolher. Para resolver isso, a gente vai precisar entender como funciona a conversão de bases numéricas. Vamos precisar transformar o número binário em decimal primeiro e depois esse decimal em base $ b $.
Passo 2
Primeiro, vamos entender como converter um número binário para decimal. O sistema binário é base 2, o que significa que cada dígito representa uma potência de 2. Por exemplo, o número binário $ 1011 $ pode ser convertido para decimal da seguinte forma:
Então, a gente precisa somar cada dígito binário multiplicado pela sua respectiva potência de 2.
Passo 3
Agora que a gente já converteu o número binário para decimal, o próximo passo é transformar esse número decimal para a base $ b $ que o usuário escolher. Para fazer isso, vamos dividir o número decimal pela base $ b $ repetidamente e guardar os restos dessas divisões. Os restos, lidos de trás para frente, vão formar o número na nova base.
Por exemplo, para converter o número decimal $ 11 $ para a base $ 3 $:
Lendo os restos de baixo para cima, o número na base $ 3 $ é $ 102 $.
Passo 4
Vamos agora colocar tudo isso em um algoritmo Python. O programa vai:
- Receber o número binário $ n $ e a base $ b $ como entrada.
- Converter $ n $ de binário para decimal.
- Converter o número decimal para a base $ b $.
- Exibir o resultado.
Aqui está o código:
def binario_para_decimal(n):
decimal = 0
n = n[::-1] # Inverte o número para facilitar a potenciação
for i in range(len(n)):
decimal += int(n[i]) * (2 ** i)
return decimal
def decimal_para_base_b(decimal, b):
if decimal == 0:
return '0'
digits = []
while decimal > 0:
resto = decimal % b
digits.append(str(resto))
decimal = decimal // b
digits.reverse()
return ''.join(digits)
# Entrada
n = input("Digite o número binário: ")
b = int(input("Digite a base para conversão: "))
# Conversão
decimal = binario_para_decimal(n)
resultado = decimal_para_base_b(decimal, b)
# Saída
print(f"O número {n} na base {b} é {resultado}")
Resposta
Prontinho! Com esse algoritmo, você consegue converter qualquer número binário para a base que desejar. Por exemplo, se você inserir o número binário
1011
e escolher a base 3
, o programa vai te mostrar que o número convertido é 102
. Experimente com outros números e bases para ver como funciona!