Decimal para binário: escrevendo um número do jeito que a máquina guarda
O que esta conversão faz
Reescreve um número de base 10 usando apenas os dígitos 0 e 1 da base 2. Todo número inteiro tem exatamente uma forma binária, e nenhuma informação se perde em nenhum dos sentidos, então a conversão é uma troca de notação e não uma aproximação. É por isso que a ferramenta pode prometer um resultado exato para um número de trinta dígitos, coisa que uma calculadora de ponto flutuante não consegue.
Por que os restos são lidos ao contrário
O método das divisões produz o bit menos significativo primeiro, então os dígitos precisam ser lidos de baixo para cima na lista de restos. Lê-los na ordem em que foram escritos é o erro mais comum na conversão manual, e transforma 156 em 00111001 em vez do 10011100 correto. Cada resto é de fato um dígito da resposta: o número de divisões é exatamente o comprimento em bits do resultado, e para 156 os restos 0, 0, 1, 1, 1, 0, 0, 1 lidos de trás para a frente formam 10011100.
Tabela de conversão de decimal para binário
Os números decimais pequenos que mais aparecem na programação, com suas formas binárias. As potências de 2 são as que valem decorar; as demais saem delas.
| Decimal | Binário |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 111 |
| 8 | 1000 |
| 10 | 1010 |
| 15 | 1111 |
| 16 | 10000 |
| 31 | 11111 |
| 64 | 1000000 |
| 100 | 1100100 |
| 127 | 1111111 |
| 200 | 11001000 |
| 255 | 11111111 |
| 1000 | 1111101000 |
Onde o binário aparece sem você perceber
Toda permissão de arquivo, máscara de rede, registrador de flags e canal de imagem é um número binário vestido com uma notação mais amigável. Ler 156 como 10011100 mostra na hora que o bit mais alto e quatro bits do meio estão ligados, que é justamente a pergunta que você faz quando um registrador de status parece errado. O hexadecimal existe para encurtar essa leitura, mas por baixo continuam sendo os mesmos bits.
Um atalho por potências de 2
Para uma resposta rápida, subtraia a maior potência de 2 que couber e repita: 156 − 128 = 28, 28 − 16 = 12, 12 − 8 = 4, 4 − 4 = 0, o que dá 128 + 16 + 8 + 4 = 10011100. Funciona porque o binário é a única base em que o dígito está totalmente presente ou totalmente ausente.
Perguntas frequentes
Como converter um número decimal em binário à mão?
Divida por 2 e anote o resto, depois divida o quociente por 2 e repita até o quociente chegar a zero. Lidos do último para o primeiro, os restos formam o número binário. Para 156 os restos são 0, 0, 1, 1, 1, 0, 0, 1, que ao contrário dão 10011100.
Quantos dígitos binários um número decimal precisa?
Um bit para cada vez que ele pode ser dividido por 2, ou seja, o logaritmo na base 2 arredondado para cima. Até 255 são necessários 8 bits, até 65535 são 16, e até cerca de 4,3 bilhões são 32. A ferramenta mostra o comprimento exato em vez de completar com zeros até uma largura fixa.
Esta ferramenta aceita números maiores que uma calculadora?
Sim. A maioria das calculadoras passa para ponto flutuante e começa a arredondar acima de 2 elevado a 53, mas aqui a aritmética é de inteiros exatos, então um valor de 64 bits volta com todos os dígitos corretos em vez de uma aproximação apenas plausível.
Como os números negativos aparecem?
Com um sinal de menos na frente dos dígitos binários: é a forma sinal-magnitude. O complemento de dois é outra convenção e só faz sentido depois que você fixa uma largura em bits, por isso não é usada aqui. Se você precisa da representação em complemento de dois de 32 bits, escreva isso explicitamente no seu código.
A ferramenta aceita frações?
Sim, e trata o caso com honestidade. A parte inteira converte exatamente; a parte fracionária é expandida dígito a dígito e para assim que chega a zero. Uma fração como um décimo nunca termina em binário, então o resultado é truncado e a página avisa, em vez de fingir que a resposta está completa.