Comparando os comandos de input
em 14 de Julho de 2014
Nos meus dois últimos posts , expliquei como funciona a famosa base 2, ou números binários, e como nós podemos converter números da base 10 para a base 2 e vice-versa. Se você ainda não leu (como não?!), vai lá dar uma lida que eu espero!
Agora que você já sabe converter da base 2 para a base 10 na mão, você também já sabe o algoritmo! Coincidência, não?
Afinal, só precisamos, a partir da unidade (o dígito mais à direita do número), multiplicar o coeficiente pela potência de 2 adequada e somar tudo! Por exemplo:
101010 = (1 × 25) + (0 × 24) + (1 × 23) + (0 × 22) + (1 × 21) + (0 × 20)
Vamos escrever o programa que faz essa conta, para isso, usaremos a linguagem python (padrão 3), já que ela é bem simples:
1 2 3 4 5 6 7 8 9 10 |
|
Vamos entender o programa:
Na linha 1 definimos a função, que é muito criativamente chamada de "binario_para_decimal". Ela recebe um número n como parâmetro, que nós assumimos que é um número em binário;
As linhas 2 e 3 inicializam a variável numero_em_decimal, que armazena, impressionantemente, o número em decimal, e o expoente da potência de 2 que estamos usando.
A variável número em decimal é inicializada com 0, pois vamos somar cada um dos dígitos multiplicados pela sua potência de 2, sendo 0 o elemento neutro da adição. Já expoente começa com 0 pois é o primeiro expoente!
Na linha 7, nós somamos o dígito multiplicado pela potência de 2 correta, que é marcada pela variável expoente, a qual nós aumentaremos toda vez que fizermos uma conta.
Vejamos alguns exemplos:
print(binario_para_decimal(111))
# Imprime 7
print(binario_para_decimal(101010))
# Imprime 42
print(binario_para_decimal(100))
# Imprime 4
print(binario_para_decimal(111111))
# Imprime 63
Fácil, certo? Simplemente "traduzimos" a soma que a gente já sabia para python!
Agora que sabemos ir da base 2 para a base 10, vamos fazer o caminho inverso!
Felizmente, converter um número para binário é muito fácil, já que só precisamos dividir o número por 2 até não poder mais e pegar os restos, como já tinhamos visto antes.
A figura abaixo vai (de novo!) ajudar a gente:
Vamos direto ao código dessa vez, já que só vamos dividir o número e colocar na nossa lista!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Na linha 3, nós colocamos o primeiro resto da divisão de n por 2 na nossa lista de restos, assim como vimos no post anterior (falei que era para você ler!). Na linha 4, dividimos n por 2, já que a próxima divisão é a do resultado por 2, e guardamos em n mesmo.
O while da linha 5 vai repetir isso: colocar o resto da divisão de n por 2 na lista e dividir n por 2 e guardar em n novamente, o que fazemos nas linhas 6 e 7, respectivamente. Nós paramos quando n for 0.
As linhas 10 a 12 só invertem a lista e fazem ela se transformar no número em binário mesmo, mas não são importantes nesse momento: basta saber que precisamos inverter a lista, já que os restos aparecem na ordem contrária.
Vamos ver alguns exemplos:
print(decimal_para_binario(42))
# Imprime 101010
print(decimal_para_binario(2))
# Imprime 10
print(decimal_para_binario(32))
# Imprime 100000
print(decimal_para_binario(63))
# Imprime 111111
Assim terminamos nossa aventura pelo binário. Parabéns!