Questão 12 - Convertendo um número decimal fracionário para binário. Código em Python:
def decimal_para_binario_fracionario(num):
    parte_inteira = int(num)
    parte_fracionaria = num - parte_inteira
binario = bin(parte_inteira)[2:] + '.' \# Remove "0b"
while parte_fracionaria $>0$ :
    parte_fracionaria *= 2
    bit = int(parte_fracionaria)
    binario += str(bit)
    parte_fracionaria -= bit
return binario
num = float(input("Digite um número decimal fracionário: “))
print(f"Representação binária: {decimal_para_binario_fracionario(num)}”)
Explicação:
A parte inteira é convertida normalmente (bin()).
A parte fracionária é multiplicada por 2 sucessivamente.
Exemplo: >0 em binário.

Passo 1

Beleza, aqui a ideia é criar em Python um jeito de converter qualquer número decimal com parte fracionária (tipo 10.625 ou 0.75) pra binário. O conteúdo é “sistemas de numeração” e, mais especificamente, “conversão de decimal pra binário”. Vamos precisar de:
  1. Como converter a parte inteira pra binário (divisão sucessiva por 2 ou usar a função bin() do Python).
  2. Como converter a parte fracionária (multiplicação sucessiva por 2).

Passo 2

Converter a parte inteira:
Teoria: num sistema posicional, pra achar o binário de um inteiro a gente divide por 2 repetidas vezes, anotando os restos (0 ou 1) e lendo de baixo pra cima. Exemplo:
10 ÷ 2 = 5 resto 0
5 ÷ 2 = 2 resto 1
2 ÷ 2 = 1 resto 0
1 ÷ 2 = 0 resto 1
Lendo os restos de baixo pra cima: 1010₂.
Em Python, bin(10) já te dá a string '0b1010', daí você faz [2:] pra remover o '0b'.

Passo 3

Converter a parte fracionária:
Teoria: pra cada etapa, você multiplica a parte fracionária por 2. Se o resultado for ≥1, o próximo bit é 1 e você subtrai 1; se for <1, o bit é 0 e você continua com esse valor. Você repete até a parte fracionária chegar a zero (ou até o número de bits desejado).
Exemplo rápido com 0.625:
0.625×2 = 1.25 → bit 1, sobra 0.25
0.25×2 = 0.5 → bit 0, sobra 0.5
0.5×2 = 1.0 → bit 1, sobra 0.0
Logo a parte fracionária vira .101₂.

Passo 4

Explicando o código Python passo a passo:
def decimal_para_binario_fracionario(num):
    parte_inteira = int(num)           # joga fora a parte fracionária
    parte_fracionaria = num - parte_inteira
    # converte a parte inteira usando bin() e tira o '0b'
    binario = bin(parte_inteira)[2:] + '.'
    # enquanto ainda tiver fração diferente de zero...
    while parte_fracionaria > 0:
        parte_fracionaria *= 2         # multiplica por 2
        bit = int(parte_fracionaria)   # parte inteira vira o bit (0 ou 1)
        binario += str(bit)            # anexa ao resultado
        parte_fracionaria -= bit       # tira o bit pra continuar só com a fração
    return binario
No final, a string binario é algo como '1010.101'.

Passo 5

Vamos ver um exemplo completo:
num = 10.625
– Parte inteira: 10 → 1010₂
– Parte fracionária: 0.625 → (×2→1.25:1, sobra 0.25; ×2→0.5:0, sobra 0.5; ×2→1.0:1, sobra 0.0) → 101₂
Concatena: 1010.101

Resposta

Para num = 10.625, o código retorna a representação binária: 1010.101

Exercícios relacionados