Binário, decimal e hexadecimal: guia rápido de conversão
Tabela e exemplos para converter entre binário, decimal e hexadecimal. Aprenda o valor posicional, os grupos de quatro bits e as armadilhas com sinal e largura.
Binário, decimal e hexadecimal são três formas de escrever valores numéricos. O valor não muda quando a base muda; muda apenas a representação. Esta referência reúne as relações mais úteis para depuração, protocolos e estudo.
As três bases
- Binário usa a base 2 e os dígitos
0e1. - Decimal usa a base 10 e os dígitos de
0a9. - Hexadecimal usa a base 16 e os dígitos de
0a9e deAaF.
Cada dígito hexadecimal corresponde exatamente a quatro bits. Dois dígitos hexadecimais representam oito bits, isto é, um byte. Esta relação torna o hexadecimal mais compacto do que uma longa cadeia de zeros e uns.
Tabela de quatro bits
| Binário | Decimal | Hexadecimal |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
Binário para hexadecimal
Agrupe os bits da direita para a esquerda em blocos de quatro. Acrescente zeros à esquerda apenas para completar o primeiro grupo, sem alterar o valor.
11110000₂ → 1111 0000 → F0₁₆
101101₂ → 0010 1101 → 2D₁₆
Hexadecimal para binário
Substitua cada dígito hexadecimal pelo grupo correspondente de quatro bits:
2A₁₆ → 2 = 0010, A = 1010 → 00101010₂
FF₁₆ → F = 1111, F = 1111 → 11111111₂
Os zeros iniciais podem ser importantes quando a largura faz parte do formato. 2A e 002A têm o mesmo valor numérico, mas não ocupam o mesmo número de bytes numa representação de largura fixa.
Binário para decimal
Multiplique cada bit pela potência de 2 da respetiva posição, começando em zero à direita:
101101₂ = 1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 32 + 8 + 4 + 1
= 45₁₀
Decimal para binário ou hexadecimal
Para converter um inteiro decimal, divida repetidamente pela base e leia os restos pela ordem inversa. Para 45:
45₁₀ = 101101₂ = 2D₁₆
Num programa, evite converter valores grandes através de tipos de vírgula flutuante quando precisa de exatidão inteira. Em JavaScript, BigInt é adequado para inteiros que excedem o intervalo seguro de Number.
Sinal e largura
Uma cadeia de bits não indica sozinha se o valor tem sinal. Em oito bits, 11111111 vale 255 sem sinal e -1 em complemento de dois. Também é necessário saber se a largura é 8, 16, 32 ou 64 bits. Não remova zeros iniciais antes de interpretar um campo de largura fixa.
Os prefixos 0b e 0x são convenções de linguagens de programação para binário e hexadecimal; não fazem parte dos dígitos do valor. Confirme se a ferramenta ou o protocolo os aceita.
Também é importante separar valor e codificação. O número hexadecimal 41 pode representar o inteiro 65; num ficheiro de texto ASCII ou UTF-8, o byte 41 representa a letra A. Sem conhecer o tipo do campo, a largura e a codificação, a mesma sequência pode ser interpretada de várias formas. Uma tabela de bases confirma a aritmética, mas não identifica por si só o significado dos dados.
Ferramentas para confirmar resultados
- Binário para decimal
- Binário para hexadecimal
- Hexadecimal para binário
- Conversor de bases de 2 a 62
- Conversor de complemento de dois