O que é um sistema posicional
No número decimal 4.095, o 4 não vale 4: vale 4.000, porque está na casa dos milhares. Cada posição multiplica o dígito por uma potência de 10 (1, 10, 100, 1.000…). Esse é o sistema posicional, e a base é a quantidade de dígitos diferentes que se usam: dez no decimal.
O binário funciona igual, mas com base 2: só existem o 0 e o 1, e cada casa vale o dobro da anterior. O hexadecimal usa base 16: os dezesseis dígitos são 0 a 9 e as letras A a F, e cada casa vale 16 vezes a anterior. Os computadores trabalham em binário porque um circuito só precisa distinguir dois estados (desligado e ligado), e o hexadecimal é uma forma curta de escrever esses bits.
| Posição (da direita para a esquerda) | Valor em binário | Valor em hexadecimal |
|---|---|---|
| 1.ª | 1 | 1 |
| 2.ª | 2 | 16 |
| 3.ª | 4 | 256 |
| 4.ª | 8 | 4.096 |
| 5.ª | 16 | 65.536 |
| 6.ª | 32 | 1.048.576 |
| 7.ª | 64 | 16.777.216 |
| 8.ª | 128 | 268.435.456 |
De binário para decimal, à mão
Escreve-se cada dígito com o valor da sua casa e somam-se só as casas em que há um 1. Exemplo com 1101: da direita para a esquerda, as casas valem 1, 2, 4 e 8.
- Escreva o número e, embaixo, o valor de cada posição: 1 1 0 1 sobre 8 4 2 1.
- Veja o que há em cada casa: um 1 na do 8, um 1 na do 4, um 0 na do 2 e um 1 na do 1.
- Ignore as casas que têm um 0 (aqui, a do 2).
- Some: 8 + 4 + 0 + 1 = 13. Então 1101 em binário é 13 em decimal.
Com mais dígitos é a mesma coisa: 11111111 é 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, o maior valor que cabe em 8 bits. E 10110110 é 128 + 32 + 16 + 4 + 2 = 182.
De decimal para binário, por divisões sucessivas
Divide-se o número por 2 várias vezes, anotando o resto de cada divisão (sempre 0 ou 1), até chegar a quociente 0. Os restos, lidos de baixo para cima, formam o número binário. Exemplo com 45:
- 45 ÷ 2 = 22, resto 1
- 22 ÷ 2 = 11, resto 0
- 11 ÷ 2 = 5, resto 1
- 5 ÷ 2 = 2, resto 1
- 2 ÷ 2 = 1, resto 0
- 1 ÷ 2 = 0, resto 1
Lendo os restos de baixo para cima, fica 101101. Para conferir, some: 32 + 8 + 4 + 1 = 45.
Há um método alternativo que muita gente prefere: subtrair potências de 2 da maior para a menor. Para 200: cabe o 128 (sobra 72), cabe o 64 (sobra 8), não cabem 32 e 16, mas cabe o 8 (sobra 0). As casas usadas são 128, 64 e 8, então 200 = 11001000.
Hexadecimal: dezesseis dígitos e uma tabela para ter à mão
Como não existem dígitos para 10 a 15, usam-se as letras A, B, C, D, E e F. Um dígito hexadecimal equivale exatamente a quatro bits (um “nibble”), e por isso ele é tão prático: um byte, de 8 bits, escreve-se com apenas dois dígitos hexadecimais.
Para passar de hexadecimal para decimal, multiplique cada dígito pela potência de 16 da sua casa e some. Por exemplo, 3F = 3 × 16 + 15 = 63 e A3 = 10 × 16 + 3 = 163.
| Decimal | Binário (4 bits) | Octal | Hexadecimal |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Por que se usa o hexadecimal: bytes, cores e endereços
Um byte são 8 bits e vai de 0 a 255 (00000000 a 11111111). Escrever bits à mão é lento e sujeito a erros; em hexadecimal o mesmo byte são dois caracteres, de 00 a FF. Para passar de binário para hexadecimal, separe os bits em grupos de quatro a partir da direita e troque cada grupo pelo seu dígito da tabela. Exemplo: 11010111 se divide em 1101 e 0111, que são D e 7, então vale D7. Em decimal é 13 × 16 + 7 = 215.
O caso mais conhecido são as cores da web. Em #FF8800 há três bytes: FF para o vermelho (255), 88 para o verde (136) e 00 para o azul (0). É um laranja intenso: todo o vermelho, um pouco mais da metade do verde e nada de azul. O hexadecimal também aparece em endereços de memória, em códigos de erro e em identificadores de rede.
De texto para binário com ASCII
Um computador guarda cada letra como um número, e esse número como bits. Na tabela ASCII, a A é 65, que em binário de 8 bits é 01000001. A palavra “Hi” são duas letras: H é 72 (01001000) e i é 105 (01101001), então se escreve 01001000 01101001. Com “Ola” são 79, 108 e 97, ou seja, 01001111 01101100 01100001, ou em hexadecimal 4F 6C 61.
A ferramenta usa a codificação UTF-8: para letras básicas do inglês cada caractere ocupa um byte de 8 bits, mas um ã, uma letra acentuada ou um emoji ocupam vários bytes, e por isso dão mais de 8 bits. Por exemplo, o ã são dois bytes: 11000011 10100011 (C3 A3 em hexadecimal).
Como fazer tudo isso com a ferramenta
O conversor “Binário, decimal e hexadecimal” serve para conferir suas contas à mão ou para resolver números longos sem erros.
- Digite o número no campo da sua base: “Decimal (base 10)”, “Binário (base 2)”, octal ou “Hexadecimal (base 16)”. Os outros três se preenchem sozinhos.
- Se o dígito não corresponde à base (um 2 em binário, por exemplo), a ferramenta avisa.
- Para texto, digite no campo “Texto” e veja “Binário (8 bits por caractere)” e o hexadecimal por bytes. Você também pode colar bits em grupos de 8 para voltar ao texto.
- Para bases diferentes, use “Qualquer base (de 2 a 36)”: você escolhe a base de origem, a de destino e o número.
Os limites: só converte inteiros não negativos (sem decimais nem sinal) e não coloca zeros à esquerda por você, então se quiser 8 bits fixos precisa completar à mão (13 é 00001101). Nada do que você digita sai do seu navegador.
Erros comuns
- Ler os restos ao contrário: nas divisões sucessivas, o primeiro resto é o dígito mais à direita, não o mais à esquerda.
- Esquecer os zeros à esquerda quando eles são necessários: 13 é 1101, mas como byte é 00001101. Importa quando o tamanho faz parte do dado, como em uma cor ou em uma máscara de rede.
- Confundir a letra O com o zero ou o B hexadecimal (11) com um 8 ao copiar. Em hexadecimal as letras valem o mesmo em maiúscula e minúscula, mas não são a mesma coisa que um dígito.
- Deixar o prefixo 0x ou o sinal # ao converter: são apenas marcas de que o número é hexadecimal e precisam ser removidos antes de colar.
- Achar que 10 em binário é dez: é dois. O mesmo “10” vale 2, 10 ou 16 conforme a base.
Exercícios resolvidos para praticar
Tente resolver cada um antes de olhar a resposta e confira depois com a ferramenta.
- Passe 10110110 para decimal e para hexadecimal. Resposta: 128 + 32 + 16 + 4 + 2 = 182; em grupos de quatro, 1011 0110 = B6.
- Passe 200 para binário e para hexadecimal. Resposta: 11001000 e C8 (12 × 16 + 8 = 200).
- Passe 7F para binário. Resposta: 7 = 0111 e F = 1111, então 01111111, que em decimal é 127.
- Escreva “OK” em binário. Resposta: O é 79 e K é 75, ou seja, 01001111 01001011.
Perguntas frequentes
Como passo 1101 de binário para decimal?
Você soma os valores das casas em que há um 1: 8 + 4 + 1 = 13. O segundo dígito da direita é um 0, então o 2 não entra na soma.
Quanto é 255 em binário e em hexadecimal?
255 é 11111111 em binário e FF em hexadecimal. É o maior valor que cabe em um byte de 8 bits.
Por que o hexadecimal usa letras?
Porque precisa de dezesseis símbolos diferentes e o sistema decimal só oferece dez (0 a 9). Por isso A vale 10, B vale 11, C vale 12, D vale 13, E vale 14 e F vale 15.
Quantos números diferentes se podem escrever com 8 bits?
256, de 0 a 255. Em geral, com n bits se podem representar 2 elevado a n valores.
A ferramenta converte números negativos ou com decimais?
Não, só inteiros não negativos. Para texto usa UTF-8, então letras acentuadas e emojis dão mais de 8 bits.