Valores posicionais no binário
Os números decimais usam dez dígitos, e cada posição vale dez vezes a posição à sua direita: unidades, dezenas, centenas. O binário funciona do mesmo jeito com dois dígitos, 0 e 1, então cada posição vale o dobro da que está à sua direita. O bit mais à direita vale 1, o seguinte 2, depois 4, 8, 16 e assim por diante, sempre dobrando.
Oito bits formam um byte, e vale a pena decorar os valores posicionais de um byte, porque eles aparecem em toda parte na computação, do tamanho de arquivos às máscaras de rede.
| Posição do bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Valor posicional | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Binário para decimal passo a passo
Pegue 11010110 como exemplo. Escreva os valores posicionais acima ou abaixo dos dígitos, começando com 1 à direita. Depois some só os valores posicionais que têm um 1 embaixo: 128 + 64 + 16 + 4 + 2 = 214. Esse é o método inteiro, e ele funciona para números de qualquer tamanho.
Para números longos, separe os bits em grupos de quatro a partir da direita e converta cada grupo para hexadecimal, depois para decimal, ou simplesmente cole o número no conversor, que aceita qualquer tamanho e não arredonda.
| Binário | Cálculo | Decimal |
|---|---|---|
| 101 | 4 + 1 | 5 |
| 1111 | 8 + 4 + 2 + 1 | 15 |
| 100000 | 32 | 32 |
| 11010110 | 128 + 64 + 16 + 4 + 2 | 214 |
| 11111111 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 | 255 |
| 11111101010 | 1024 + 512 + 256 + 128 + 64 + 32 + 8 + 2 | 2026 |
Experimente aqui: Binário para decimal
Abrir a página completa da ferramentaDecimal para binário: divida por dois
O caminho inverso usa divisões sucessivas. Divida o número por 2, anote o resto (0 ou 1) e continue com o resultado até chegar a 0. Os restos lidos do último para o primeiro formam o número binário.
Para 214: 214 / 2 = 107 resto 0, 107 / 2 = 53 resto 1, 53 / 2 = 26 resto 1, 26 / 2 = 13 resto 0, 13 / 2 = 6 resto 1, 6 / 2 = 3 resto 0, 3 / 2 = 1 resto 1, 1 / 2 = 0 resto 1. Lendo os restos de baixo para cima, você tem 11010110, o mesmo número do exemplo acima.
Outro jeito é subtrair o maior valor posicional que cabe: 214 menos 128 sobra 86, menos 64 sobra 22, menos 16 sobra 6, menos 4 sobra 2, menos 2 sobra 0. Escreva 1 para cada valor posicional que você usou e 0 para os outros.
Hexadecimal: quatro bits por dígito
Números binários longos são difíceis de ler, então os programadores escrevem esses números em hexadecimal. O hexadecimal tem dezesseis dígitos, de 0 a 9 e de A a F, e um dígito hexa representa exatamente quatro bits. Para converter, separe o número binário em grupos de quatro a partir da direita e troque cada grupo usando a tabela. 1101 0110 vira D6, e D6 em decimal é 13 x 16 + 6 = 214.
| Binário | Hexa | Decimal | Binário | Hexa | Decimal |
|---|---|---|---|---|---|
| 0000 | 0 | 0 | 1000 | 8 | 8 |
| 0001 | 1 | 1 | 1001 | 9 | 9 |
| 0010 | 2 | 2 | 1010 | A | 10 |
| 0011 | 3 | 3 | 1011 | B | 11 |
| 0100 | 4 | 4 | 1100 | C | 12 |
| 0101 | 5 | 5 | 1101 | D | 13 |
| 0110 | 6 | 6 | 1110 | E | 14 |
| 0111 | 7 | 7 | 1111 | F | 15 |
Números negativos: complemento de dois
Os computadores guardam números inteiros negativos em complemento de dois. O bit mais alto de um número com largura fixa tem peso negativo: em 8 bits, o bit mais à esquerda vale -128 em vez de 128. Assim, 11111111 é -128 + 127 = -1, e 10000000 é -128.
Para achar o padrão de um número negativo, escreva o valor positivo em binário, inverta todos os bits e some 1. Para -6 em 8 bits: 6 é 00000110, invertido fica 11111001, mais 1 dá 11111010. Os mesmos bits lidos como número sem sinal valem 250, e por isso importa saber se um valor tem sinal. No conversor, ative Com sinal e escolha a largura em bits para ver as duas leituras.
Frações binárias
Os dígitos depois da vírgula binária valem um meio, um quarto, um oitavo e assim por diante. 0,101 é 0,5 + 0,125 = 0,625. Muitas frações decimais simples não podem ser escritas com exatidão em binário: 0,1 vira 0,000110011001100... com 0011 se repetindo para sempre. É por isso que 0.1 + 0.2 não dá exatamente 0.3 na maioria das linguagens de programação. O conversor mostra esses dígitos periódicos entre parênteses, por exemplo 0.0(0011), usando ponto como separador, como nas linguagens de programação.