Guia de Conversão de Bases Numéricas: Binário, Hex e Octal Explicados
Se alguma vez ficaste a olhar para um código de cor hexadecimal como #1A2B3C ou uma permissão Unix como chmod 755 e te perguntaste de onde vêm aqueles números, não estás sozinho. As bases numéricas são um daqueles conceitos fundamentais que a maioria dos programadores usa todos os dias sem pensar duas vezes — até ao momento em que precisam realmente de converter entre elas.
Vamos resolver isso. Este guia percorre os sistemas numéricos que importam na programação, como converter entre eles e quando cada um aparece na prática.
O Que Significa Realmente "Base"?
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
Isto é notação posicional. A "base" (também chamada radix) indica-te 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 — apenas muda 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 num minuto e 360 graus num círculo.
Binário (Base 2): A Linguagem do Hardware
Porquê que os Computadores Usam Binário
Os computadores funcionam com transístores, e os transístores têm dois estados fiáveis: ligado e desligado. Isto mapeia-se perfeitamente para 1 e 0. Em teoria, poderias 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.
Ler 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
Portanto, 101101 em binário equivale a 45 em decimal. Lê-se da direita para a esquerda, duplicando o valor posicional de cada vez: 1, 2, 4, 8, 16, 32, 64, 128…
Bits, Bytes e Mais
- 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, razão pela qual os caracteres ASCII cabem num 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 transporte 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 (tal como 9 + 1 = 10 em decimal), escreves 0 e transportas 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 mapeia-se para exactamente três dígitos binários, tornando-o uma abreviatura conveniente.
Onde Ainda se Encontra o Octal
O sítio mais comum hoje em dia são as permissões de ficheiros Unix. Quando escreves 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 erros):
const permissions = 0o755; // 493 in decimal
console.log(permissions.toString(8)); // "755"
Tem cuidado em JavaScript e Python: um zero inicial como 0755 pode ser interpretado como octal em certos contextos. Usa sempre o prefixo explícito 0o para evitar ambiguidades.
Hexadecimal (Base 16): O Favorito dos Programadores
Porquê que o Hex Existe
O hexadecimal resolve um problema prático: os números binários tornam-se longos muito depressa. O número decimal 255 é 11111111 em binário — oito dígitos. Em hex, é apenas FF. Cada dígito hex mapeia-se para exactamente 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 Dia a Dia
As cores web são o uso mais visível do hex. #FF5733 decompõe-se assim:
#FF5733
││││││
││││└┘── Blue: 0x33 = 51
││└┘──── Green: 0x57 = 87
└┘────── Red: 0xFF = 255
Os endereços de memória nos depuradores são apresentados em hex: 0x7FFF5FBFFA10 é mais legível do que o 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.
Converter Entre Bases
Decimal para Binário
Divide repetidamente por 2 e recolhe 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 divide-se 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)
Agrupa os dígitos binários em conjuntos de quatro (da direita para a esquerda) e converte cada grupo:
Binary: 10 1101
Padded: 0010 1101
Groups: 2 D
Result: 0x2D
Verificação: 0x2D = 2×16 + 13 = 45 ✓
Hex para Binário
Inverte o processo. Expande cada dígito hex para quatro dígitos binários:
Hex: F A 3
Binary: 1111 1010 0011
Result: 111110100011
Dica: memoriza os padrões binários de 0 a F (são apenas 16). Assim que os souberes, as conversões hex↔binário acontecem instantaneamente na tua cabeça. Começa 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
Repara na armadilha do C: um 0 inicial significa octal. Escrever int x = 010; dá-te 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 Inspecção de Memória
Quando vês um segfault no endereço 0xDEADBEEF ou memória inicializada com 0xCAFEBABE, esses são constantes hex escolhidas especificamente por serem fáceis de identificar em dumps de memória. Os ficheiros 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. Os endereços MAC, os IDs de fabricante USB e os UUIDs Bluetooth também usam hex.
Experimenta Tu Mesmo
Dispensa a matemática manual. O nosso Conversor de Bases Numéricas trata das conversões entre quaisquer bases instantaneamente. Tudo corre no teu navegador, pelo que nada é enviado para um servidor.
É especialmente útil quando precisas de:
- 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 apresentados em hexadecimal
- Conversor de Bases Numéricas — converte entre quaisquer bases instantaneamente no teu navegador
🛠️ Experimenta agora: Conversor de Bases Numéricas — converte entre binário, octal, decimal, hex e qualquer base até 36. 100% no lado do cliente, completamente gratuito.