Escreva um código em python para converter o sistema binário para o sistema decimal e um para o processo inverso.

Passo 1

Então, a gente tem um exercício que pede para criar dois códigos em Python: um que converta números do sistema binário para o sistema decimal, e outro que faça o caminho inverso, ou seja, de decimal para binário. Para resolver isso, vamos precisar entender como funcionam esses sistemas numéricos e como podemos manipular números no Python para fazer essas conversões.

Passo 2

Vamos começar convertendo 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 binário 1011 é igual a em decimal.
No Python, podemos fazer isso iterando sobre cada dígito do número binário, multiplicando pelo valor da potência de 2 correspondente e somando tudo. Aqui está o código:
def binario_para_decimal(binario):
    decimal = 0
    tamanho = len(binario)
    for i in range(tamanho):
        digito = binario[tamanho - i - 1]
        if digito == '1':
            decimal += 2 ** i
    return decimal

# Exemplo de uso
bin_num = "1011"
print(f"O número binário {bin_num} é {binario_para_decimal(bin_num)} em decimal.")

Passo 3

Agora, vamos fazer a conversão de decimal para binário. Para isso, dividimos o número decimal por 2 repetidamente e anotamos os restos das divisões. Esses restos, lidos de baixo para cima, formam o número binário equivalente.
No Python, podemos usar um loop para fazer essas divisões e construir a representação binária. Veja o código:
def decimal_para_binario(decimal):
    if decimal == 0:
        return "0"
    binario = ""
    while decimal > 0:
        resto = decimal % 2
        binario = str(resto) + binario
        decimal = decimal // 2
    return binario

# Exemplo de uso
dec_num = 11
print(f"O número decimal {dec_num} é {decimal_para_binario(dec_num)} em binário.")

Resposta

Aqui estão os dois códigos completos para converter entre binário e decimal:
def binario_para_decimal(binario):
    decimal = 0
    tamanho = len(binario)
    for i in range(tamanho):
        digito = binario[tamanho - i - 1]
        if digito == '1':
            decimal += 2 ** i
    return decimal

def decimal_para_binario(decimal):
    if decimal == 0:
        return "0"
    binario = ""
    while decimal > 0:
        resto = decimal % 2
        binario = str(resto) + binario
        decimal = decimal // 2
    return binario

# Exemplos de uso
bin_num = "1011"
dec_num = 11

print(f"O número binário {bin_num} é {binario_para_decimal(bin_num)} em decimal.")
print(f"O número decimal {dec_num} é {decimal_para_binario(dec_num)} em binário.")
Quando você roda esse código, a saída será:
O número binário 1011 é 11 em decimal.
O número decimal 11 é 1011 em binário.

Exercícios relacionados

Liste os 5 primeiros termos das sequências e deduza o valor de convergência.
Dado o sistema de aritmética de ponto flutuante com três números significativos com , represente o número , se possível, usando Arredondamento e truncamento.
Liste os 5 primeiros termos das sequências e deduza o valor de convergência.
Liste os 5 primeiros termos das sequências e deduza o valor de convergência.