Como Converter Números Entre Binário, Octal, Decimal e Hexadecimal
Para converter um número decimal para outra base, divida repetidamente pela base de destino e anote os restos: eles formam o resultado quando lidos de baixo para cima. O decimal 202, por exemplo, vira 11001010 em binário, 312 em octal e CA em hexadecimal. O mesmo raciocínio funciona ao contrário, para ler qualquer número octal ou hexadecimal de volta como decimal.
O que uma base numérica realmente significa
Uma base numérica (ou radix) define quantos dígitos únicos um sistema posicional usa antes de “estourar” e criar uma nova casa. O decimal, base 10, usa os dígitos 0 a 9. O binário, base 2, usa só 0 e 1. O octal, base 8, usa 0 a 7. O hexadecimal, base 16, precisa de mais símbolos do que algarismos existem, então empresta as letras A a F para representar os valores 10 a 15.
O que muda entre as bases não é a quantidade que está sendo representada, é como ela se escreve. Isso é a notação posicional: cada casa de um número vale uma potência da base, e o valor total é a soma de cada dígito multiplicado pela potência da sua posição. No decimal 202, o dígito 2 na casa das centenas vale 2 × 10², o 0 na casa das dezenas vale 0 × 10¹, e o 2 na casa das unidades vale 2 × 10⁰. Some os três e volta a dar 202. O mesmo princípio vale para qualquer base, só troca o 10 pela base em questão.
Convertendo decimal para binário, octal e hexadecimal na mão
Pegue 202 como exemplo de trabalho. Existem dois métodos manuais que se complementam bem: divisão por resto, que funciona para qualquer base, e subtração por valor posicional, que é mais rápida de fazer de cabeça especificamente para binário.
Método da divisão por resto (funciona para octal e hex):
Divida o número pela base de destino repetidamente, guardando o resto de cada divisão, até chegar a zero. O resultado é a sequência de restos lida de baixo para cima.
Para octal (base 8):
| Divisão | Quociente | Resto |
|---|---|---|
| 202 ÷ 8 | 25 | 2 |
| 25 ÷ 8 | 3 | 1 |
| 3 ÷ 8 | 0 | 3 |
Lendo os restos de baixo para cima: 3, 1, 2. Então 202 em octal é 312.
Para hexadecimal (base 16):
| Divisão | Quociente | Resto |
|---|---|---|
| 202 ÷ 16 | 12 | 10 (A) |
| 12 ÷ 16 | 0 | 12 (C) |
Lendo de baixo para cima: C, A. Então 202 em hexadecimal é CA. Repare que o primeiro resto, 10, precisa virar o dígito hexadecimal A, e o segundo, 12, vira C, porque hexadecimal não tem algarismos além do 9.
Método do valor posicional (mais rápido para binário):
Em vez de dividir, encontre a maior potência de 2 que cabe no número, subtraia, e repita com o que sobrou. As potências de 2 relevantes até 202 são 128, 64, 32, 16, 8, 4, 2 e 1.
| Potência de 2 | Cabe em 202? | Resto após subtrair | Bit |
|---|---|---|---|
| 128 | Sim | 202 − 128 = 74 | 1 |
| 64 | Sim | 74 − 64 = 10 | 1 |
| 32 | Não | 10 | 0 |
| 16 | Não | 10 | 0 |
| 8 | Sim | 10 − 8 = 2 | 1 |
| 4 | Não | 2 | 0 |
| 2 | Sim | 2 − 2 = 0 | 1 |
| 1 | Não | 0 | 0 |
Lendo a coluna dos bits de cima para baixo: 11001010. Confira: 128 + 64 + 8 + 2 = 202, exatamente os bits marcados como 1. Esse é o mesmo binário que sai do método da divisão por resto aplicado repetidamente por 2, só que mais rápido de fazer sem lápis e papel.
Como referência rápida, um número redondo como decimal 4096 (2¹²) vira 1000000000000 em binário, 10000 em octal e 1000 em hexadecimal. Potências exatas da base sempre produzem essa aparência de “1 seguido de zeros”, só muda a quantidade de zeros conforme a base.
Lendo octal e hexadecimal de volta para decimal
O caminho inverso, de outra base para decimal, é onde a maioria dos programadores esbarra na prática, geralmente ao olhar para um valor de permissão de arquivo no Linux. Rodar ls -l mostra algo como -rwxr-xr-x, e o comando chmod 755 arquivo usa exatamente esse número octal para definir essas permissões.
Para transformar o octal 755 em decimal, multiplique cada dígito pela potência de 8 correspondente à sua posição, começando do zero na direita:
7 × 8² + 5 × 8¹ + 5 × 8⁰ = 7 × 64 + 5 × 8 + 5 × 1 = 448 + 40 + 5 = 493
Em binário, 755 vira 111101101. Dá para chegar nesse valor de duas formas: convertendo 493 pelo método de subtração da seção anterior, ou usando o atalho de agrupamento de 3 bits, que funciona porque octal é base 8 e 8 é 2³. Cada dígito octal corresponde exatamente a um grupo de 3 bits, sem sobra nem carregamento entre grupos:
| Dígito octal | 7 | 5 | 5 |
|---|---|---|---|
| Grupo de 3 bits | 111 | 101 | 101 |
Junte os grupos e tem 111101101, o mesmo resultado de antes. O hexadecimal tem o mesmo truque, só que com grupos de 4 bits (um nibble), porque 16 é 2⁴. É por isso que hex aparece tanto em endereços de memória, códigos de cor (#RRGGBB) e dumps de erro: cada par de dígitos hex representa exatamente um byte, então 0xFF (dois dígitos) equivale a oito dígitos binários, muito mais compacto de ler e escrever à mão. O valor de 755 em hex, seguindo o mesmo caminho, é 1ED.
Calcule com os seus próprios números
Digite qualquer valor em decimal, binário, octal ou hexadecimal no campo abaixo e veja as outras três representações atualizarem na hora.
Erros comuns e casos especiais
Confundir sinal-magnitude com complemento de dois. O decimal -18 vira -10010 em binário, -22 em octal e -12 em hexadecimal: um sinal de menos na frente do valor absoluto, em cada base. Essa é a representação de sinal-magnitude, e é o que este conversor usa. Muitos programadores esperam complemento de dois, o esquema usado internamente por processadores para números com sinal, onde -18 como binário de 8 bits com sinal seria 11101110, um padrão de bits completamente diferente. Os dois são formas legítimas de representar negativos, mas resolvem problemas diferentes: sinal-magnitude é intuitivo para leitura humana, complemento de dois é o que torna a subtração eletricamente simples dentro de um chip. Não misture os dois ao interpretar um valor.
Esquecer que letras hexadecimais não fazem diferença de maiúscula ou minúscula na entrada. Digitar ca, Ca ou CA no campo hex resulta no mesmo valor 202. A saída, porém, sempre aparece em maiúsculas, então não estranhe se você digitou em minúsculas e o resultado veio diferente na aparência.
Achar que zeros à esquerda mudam o valor. 0202 em decimal, 0011001010 em binário ou 0312 em octal representam exatamente o mesmo número que suas versões sem os zeros extras. Zeros à esquerda são só preenchimento visual, comum em contextos como endereços de memória de largura fixa, e não alteram a quantidade representada em nenhuma base.
Levar os prefixos de código para dentro da ferramenta. Linguagens de programação costumam exigir um prefixo para indicar a base de um literal no código-fonte: 0x para hexadecimal, 0b para binário, 0o (ou só um 0 inicial em C) para octal. Este conversor não usa nem espera esses prefixos, é só dígitos puros em cada campo. Se você copiar 0xCA direto de um trecho de código para o campo hexadecimal, vai dar erro; digite apenas CA.
Esbarrar no limite de precisão em números muito grandes. A ferramenta trabalha dentro do intervalo de inteiro seguro do JavaScript, até por volta de 2^53 − 1, cerca de 9 quatrilhões. Para a esmagadora maioria dos usos isso é mais do que suficiente, mas números além desse teto começam a perder precisão e exigiriam uma biblioteca especializada de inteiros grandes.
Perguntas frequentes
O que exatamente é uma base numérica? É a quantidade de dígitos únicos que um sistema de numeração posicional usa antes de precisar de uma nova casa. Decimal (base 10) usa 0 a 9, binário (base 2) usa só 0 e 1, octal (base 8) usa 0 a 7, e hexadecimal (base 16) usa 0 a 9 mais as letras A a F para os valores 10 a 15.
Por que os computadores usam tanto o hexadecimal se por dentro tudo é binário? Porque cada dígito hexadecimal representa exatamente 4 bits, um nibble. Isso torna o hex uma forma compacta e legível de escrever valores binários longos: um byte inteiro, 8 bits, cabe em só dois dígitos hex. É por isso que endereços de memória, códigos de cor como #2F7BFF e mensagens de erro do sistema usam hex em vez de expor a sequência binária crua.
Como converter binário para decimal na mão, passo a passo? Multiplique cada bit pela potência de 2 correspondente à sua posição, contando da direita a partir de zero, e some tudo. Para 11001010, os bits em 1 estão nas posições que valem 128, 64, 8 e 2 (contando da esquerda, ou posições 7, 6, 3 e 1 contando da direita a partir de zero), e 128 + 64 + 8 + 2 = 202.
Qual é o maior número que o conversor consegue processar? Ele trabalha dentro do intervalo de inteiro seguro do JavaScript, até aproximadamente 2^53 − 1, cerca de 9 quatrilhões. Isso cobre qualquer uso típico de desenvolvimento, cálculo escolar ou depuração de sistema; números muito além disso exigiriam uma biblioteca de precisão arbitrária.
A ferramenta aceita números negativos? Sim. Coloque um sinal de menos antes do valor em qualquer um dos quatro campos e as outras três bases mostram o equivalente negativo em sinal-magnitude, não em complemento de dois. O decimal -18, por exemplo, vira -10010 em binário, -22 em octal e -12 em hexadecimal.
Dá para compartilhar o conversor já com os valores preenchidos? Sim. A URL da ferramenta é atualizada automaticamente conforme você digita, então copiar o link do navegador ou usar o botão de compartilhar leva quem receber direto para os mesmos valores, prontos para conferência ou explicação.