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 n e base b
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:
1011
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 $:
b
b
11
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:
  1. Receber o número binário $ n $ e a base $ b $ como entrada.
  2. Converter $ n $ de binário para decimal.
  3. Converter o número decimal para a base $ b $.
  4. 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!

Exercícios relacionados