Há um jeito interessante de entender a contagem em binário:
- 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
- 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)
- 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)