Guia de Conversão de Bases Numéricas: Binário, Hex e Octal Explicados
Se você já ficou encarando um código de cor hexadecimal como #1A2B3C ou uma permissão Unix como chmod 755 e se perguntou de onde vêm aqueles números, saiba que você não está sozinho. Bases numéricas são um daqueles conceitos fundamentais que a maioria dos desenvolvedores usa todos os dias sem pensar duas vezes — até o momento em que realmente precisa converter entre elas.
Vamos resolver isso. Este guia vai percorrer os sistemas numéricos que importam na programação, como converter entre eles e quando cada um aparece na prática.
O Que "Base" Realmente Significa?
Nós contamos em base 10 (decimal) porque temos dez dedos. Cada posição de dígito representa uma potência de 10:
4 2 7
| | |
| | └── 7 × 10⁰ = 7
| └────── 2 × 10¹ = 20
└────────── 4 × 10² = 400
───
Total = 427
Isso é notação posicional. A "base" (também chamada de radix) diz quantos dígitos únicos existem no sistema e por quanto cada posição multiplica. A base 10 tem os dígitos 0–9. A base 2 tem os dígitos 0–1. A base 16 tem os dígitos 0–9 e A–F.
O conceito é idêntico em todas as bases — o que muda é apenas o número de símbolos disponíveis e o multiplicador por posição.
Curiosidade: os babilônios usavam base 60 (sexagesimal). É por isso que temos 60 segundos em um minuto e 360 graus em um círculo.
Binário (Base 2): A Linguagem do Hardware
Por Que os Computadores Usam Binário
Os computadores funcionam com transistores, e os transistores têm dois estados confiáveis: ligado e desligado. Isso se mapeia perfeitamente para 1 e 0. Em teoria, seria possível construir um computador em base 3, mas distinguir entre três níveis de tensão é mais difícil e mais propenso a erros do que distinguir entre dois. O binário vence porque é simples e robusto.
Lendo Números Binários
O binário funciona da mesma forma que o decimal, mas cada posição representa uma potência de 2:
1 0 1 1 0 1
| | | | | |
| | | | | └── 1 × 2⁰ = 1
| | | | └────── 0 × 2¹ = 0
| | | └────────── 1 × 2² = 4
| | └────────────── 1 × 2³ = 8
| └────────────────── 0 × 2⁴ = 0
└────────────────────── 1 × 2⁵ = 32
──
Total = 45
Então, 101101 em binário é igual a 45 em decimal. Você lê da direita para a esquerda, dobrando o valor posicional a cada vez: 1, 2, 4, 8, 16, 32, 64, 128…
Bits, Bytes e Além
- Bit: um único dígito binário (0 ou 1)
- Nibble: 4 bits (representa um dígito hexadecimal, valores 0–15)
- Byte: 8 bits (valores 0–255)
- Kilobyte: 1.024 bytes (2¹⁰)
Um único byte consegue representar 256 valores diferentes, e é por isso que os caracteres ASCII cabem em um byte e os canais de cor RGB vão de 0 a 255.
Noções Básicas de Aritmética Binária
A adição em binário segue as mesmas regras do decimal, mas o "vai um" acontece no 2 em vez de no 10:
1 0 1 1 (11 in decimal)
+ 0 1 1 0 ( 6 in decimal)
─────────
1 0 0 0 1 (17 in decimal)
Quando 1 + 1 = 10 em binário (assim como 9 + 1 = 10 em decimal), você escreve 0 e leva 1.
Octal (Base 8): O Sistema Legado
Uma Breve História
O octal era popular nas décadas de 1960 e 70 com máquinas como o PDP-8, que usava palavras de 12 bits — perfeitamente divisíveis em quatro grupos de três bits. Cada dígito octal corresponde a exatamente três dígitos binários, tornando-o uma abreviação conveniente.
Onde Você Ainda Encontra o Octal
O lugar mais comum hoje em dia são as permissões de arquivos Unix. Quando você digita chmod 755 script.sh, cada dígito é um número octal que representa permissões de leitura (4), escrita (2) e execução (1):
7 = 4 + 2 + 1 = rwx (owner: read, write, execute)
5 = 4 + 0 + 1 = r-x (group: read, execute)
5 = 4 + 0 + 1 = r-x (others: read, execute)
Os dígitos octais na programação usam o prefixo 0o (ou apenas um 0 inicial em C, o que já causou muitos bugs):
const permissions = 0o755; // 493 in decimal
console.log(permissions.toString(8)); // "755"
Cuidado em JavaScript e Python: um zero à esquerda como 0755 pode ser interpretado como octal em alguns contextos. Sempre use o prefixo explícito 0o para evitar ambiguidade.
Hexadecimal (Base 16): O Favorito dos Desenvolvedores
Por Que o Hex Existe
O hexadecimal resolve um problema prático: números binários ficam longos muito rápido. O número decimal 255 é 11111111 em binário — oito dígitos. Em hex, é apenas FF. Cada dígito hex corresponde a exatamente quatro dígitos binários (um nibble), tornando as conversões triviais e mantendo os números compactos.
O hex usa os dígitos 0–9 mais as letras A–F:
| Decimal | Binary | Hex |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 15 | 1111 | F |
O Hex no Mundo Real
As cores web são o uso mais visível do hex. #FF5733 se decompõe assim:
#FF5733
││││││
││││└┘── Blue: 0x33 = 51
││└┘──── Green: 0x57 = 87
└┘────── Red: 0xFF = 255
Os endereços de memória nos depuradores aparecem em hex: 0x7FFF5FBFFA10 é mais legível do que seu equivalente decimal de 140.734.799.804.944.
Os endereços MAC usam pares hexadecimais separados por dois pontos: A4:83:E7:2B:00:1F.
Cor em CSS: rgba(255, 87, 51, 1.0) e #FF5733 representam a mesma cor — o hex é simplesmente mais compacto.
Convertendo Entre Bases
Decimal para Binário
Divida repetidamente por 2 e colete os restos, lendo-os de baixo para cima:
45 ÷ 2 = 22 remainder 1 ↑
22 ÷ 2 = 11 remainder 0 │
11 ÷ 2 = 5 remainder 1 │ Read upward:
5 ÷ 2 = 2 remainder 1 │ 101101
2 ÷ 2 = 1 remainder 0 │
1 ÷ 2 = 0 remainder 1 │
Resultado: 45 em decimal = 101101 em binário.
Decimal para Hexadecimal
A mesma abordagem, mas dividindo por 16:
427 ÷ 16 = 26 remainder 11 (B) ↑
26 ÷ 16 = 1 remainder 10 (A) │ Read upward: 1AB
1 ÷ 16 = 0 remainder 1 │
Resultado: 427 em decimal = 1AB em hex.
Binário para Hex (A Conversão Fácil)
Agrupe os dígitos binários em conjuntos de quatro (da direita para a esquerda) e converta cada grupo:
Binary: 10 1101
Padded: 0010 1101
Groups: 2 D
Result: 0x2D
Verificação: 0x2D = 2×16 + 13 = 45 ✓
Hex para Binário
Inverta o processo. Expanda cada dígito hex para quatro dígitos binários:
Hex: F A 3
Binary: 1111 1010 0011
Result: 111110100011
Dica: memorize os padrões binários de 0 a F (são apenas 16). Assim que você souber todos, as conversões hex↔binário vão acontecer instantaneamente na sua cabeça. Comece pelas potências de dois: 1=0001, 2=0010, 4=0100, 8=1000.
Notação de Bases Numéricas em Linguagens de Programação
Todas as grandes linguagens têm sintaxe para escrever números em diferentes bases:
// JavaScript
const binary = 0b101101; // 45
const octal = 0o55; // 45
const hex = 0x2D; // 45
const decimal = 45; // 45
(45).toString(2); // "101101"
(45).toString(8); // "55"
(45).toString(16); // "2d"
parseInt("101101", 2); // 45
parseInt("55", 8); // 45
parseInt("2D", 16); // 45
# Python
binary = 0b101101 # 45
octal = 0o55 # 45
hexval = 0x2D # 45
bin(45) # '0b101101'
oct(45) # '0o55'
hex(45) # '0x2d'
int("101101", 2) # 45
int("55", 8) # 45
int("2D", 16) # 45
// C / C++
int binary = 0b101101; // 45 (C23 / GCC extension)
int octal = 055; // 45 (leading zero = octal!)
int hex = 0x2D; // 45
Repare na pegadinha do C: um 0 à esquerda significa octal. Escrever int x = 010; vai te dar 8, não 10.
Casos de Uso Práticos
Operações Bit a Bit e Flags
const READ = 0x01;
const WRITE = 0x02;
const EXECUTE = 0x04;
const ADMIN = 0x08;
let permissions = READ | WRITE;
if (permissions & EXECUTE) { }
Depuração e Inspeção de Memória
Quando você vê um segfault no endereço 0xDEADBEEF ou memória inicializada com 0xCAFEBABE, essas são constantes hex escolhidas especificamente por serem fáceis de identificar em dumps de memória. Os arquivos de classe Java começam com o número mágico 0xCAFEBABE.
Protocolos de Rede
Os endereços IPv6 usam notação hexadecimal: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Endereços MAC, IDs de fabricante USB e UUIDs Bluetooth também usam hex.
Experimente Você Mesmo
Dispense a matemática manual. O nosso Conversor de Bases Numéricas cuida das conversões entre quaisquer bases instantaneamente. Tudo roda no seu navegador, então nada é enviado para um servidor.
É especialmente útil quando você precisa:
- Depurar dumps de memória em hex convertendo para decimal
- Calcular permissões Unix em binário/octal
- Verificar códigos de cor entre hex e valores RGB
- Converter entre bases que não são potências de dois
Recursos Relacionados
- Codificação Base64 Explicada — o Base64 usa uma abordagem diferente para codificar binário como texto
- Comparação de Algoritmos de Hash — os resultados de hash são tipicamente exibidos em hexadecimal
- Conversor de Bases Numéricas — converta entre quaisquer bases instantaneamente no seu navegador
🛠️ Experimente agora: Conversor de Bases Numéricas — converta entre binário, octal, decimal, hex e qualquer base até 36. 100% no lado do cliente, completamente gratuito.