1
resposta

[Sugestão] [Resposta] Decimal para binário usando uma maneira diferente

Há um jeito interessante de entender a contagem em binário:

  1. Ela segue a base 2, ou seja, a proxima base à esquerda o valor será 2^(próximo número decimal) (2 elevado ao próximo número decimal). Uma forma de visualizar é esta (lembrando que ela cresce da direita para a esquerda):
 ___   ___   ___   ___   ___   => 16 8 4 2 1
2^(4) 2^(3) 2^(2) 2^(1) 2^(0) 
Veja que 2^(5) será 32 e assim por diante
  1. Você pode usar o "peso" das bases para "armazenar" os valores decimais e assim transformá-los em binário: exemplo: Quanto é o número 134 em binário? É possível recorrer à conta de divisão que outros sites ensinam, mas eu acho este meu jeito mais fácil (inclusive eu o utilizei em provas na Universidade):

O primeiro passo é encontrar a menor base 2 mais próxima de 134 que não ultrapasse o valor decimal alvo. Então eu procuro: 2^(5) = 32, não passei o número 134, ok, mas será que a próxima ultrapassa? Então 2^(6) = 64, ok, não ultrapassou, mas e a próxima? 2^(7) = 128, bem próximo, mas e a próxima? Com 2^(8) = 256, vixe, ultrapassou o 134, então a extensão do meu número binário será até a base 2^(7):

 ___   ___   ___   ___   ___   ___   ___   ___  => O número 134 terá 8 algarismos em binário
2^(7) 2^(6) 2^(5) 2^(4) 2^(3) 2^(2) 2^(1) 2^(0) 
  1. Preencho começando pelos maiores valores (mais à esquerda), que se encaixam em 134 sem ultrapassá-lo: Então, 2^(7) = 128 => 128 < 134, então ali eu boto 1.
  1    ___   ___   ___   ___   ___   ___   ___  
2^(7) 2^(6) 2^(5) 2^(4) 2^(3) 2^(2) 2^(1) 2^(0)

Feito isso eu subtraio: 134 - 128 = 6 Veja que os valores 2^(6) 2^(5) 2^(4) e 2^(3) vão ser maiores que 6, não queremos valores negativos aqui, então eles receberão um zero (0):

  1     0     0     0     0    ___   ___   ___
2^(7) 2^(6) 2^(5) 2^(4) 2^(3) 2^(2) 2^(1) 2^(0)

Continuamos usando os valores mais a esquerda até zerarmos a conta de subtração: 2^(2) = 4 => 6 - 4 = 2

  1     0     0     0     0     1    ___   ___
2^(7) 2^(6) 2^(5) 2^(4) 2^(3) 2^(2) 2^(1) 2^(0)

2^(1) = 2 => 2 - 2 = 0

  1     0     0     0     0     1     1    ___
2^(7) 2^(6) 2^(5) 2^(4) 2^(3) 2^(2) 2^(1) 2^(0)

Não sobrou mais nada na subtração, então os restantes serão zero:

  1     0     0     0     0     1     1     0
2^(7) 2^(6) 2^(5) 2^(4) 2^(3) 2^(2) 2^(1) 2^(0)

Por fim, vemos que: 134 = 10000110 em binário. Lembre-se que isso não funciona para transformar a parte fracionária do número decimal para binário. OBS: usei a função código só para ficar didático a explicação, sem ela o texto não respeitava quando eu pulava a linha. Indo para a questão, ficam assim os valores:

3 = 11        bases necessárias: 2^(1), 2^(0)
4 = 100      bases necessárias: 2^(2), 2^(1) e  2^(0)
7 = 111      bases necessárias: 2^(2), 2^(1) e 2^(0)
12 = 1100  bases necessárias: 2^(3), 2^(2), 2^(1) e 2^(0)
1 resposta

Olá, João!

Obrigado por compartilhar essa maneira interessante de entender a contagem em binário! Realmente, visualizar as potências de 2 dessa forma pode facilitar bastante o processo de conversão de decimal para binário.

Bons estudos!