Conversor de base numérica
Converta entre binário, octal, decimal e hexadecimal.
Entendendo as bases numéricas
Uma base numérica (ou radix) determina quantos dígitos únicos servem para representar os números. A mais familiar é a base 10 (decimal), que usa os dígitos 0-9. Os computadores usam nativamente a base 2 (binária), com apenas 0 e 1.
- Binário (base 2) : usado internamente por todos os sistemas digitais. Cada dígito é um « bit ».
- Octal (base 8) : usa os dígitos 0-7. Comum para permissões de arquivos Unix (por ex. chmod 755).
- Decimal (base 10) : o sistema numérico humano padrão.
- Hexadecimal (base 16) : usa 0-9 e A-F. Muito usado para cores (#FF0000), endereços de memória e representação de bytes.
Perguntas frequentes
Ele suporta números muito grandes ?
Sim. Esta ferramenta usa o BigInt do JavaScript, que suporta inteiros arbitrariamente grandes sem perda de precisão. Você pode converter números de centenas de dígitos.
Por que o binário é importante na computação ?
Os computadores usam sinais elétricos de dois estados (on/off), que correspondem naturalmente ao binário (1/0). Qualquer dado · texto, imagem, vídeo · é, no fim, armazenado e processado em binário.
Como funciona a notação posicional
Um sistema numérico posicional representa um número usando um conjunto de tamanho fixo de símbolos de dígitos, em que a posição de cada dígito determina o seu peso. O peso da posição i (contada a partir da direita, começando do zero) é base^i. O valor do número é a soma de digit × base^i em todas as posições. A string 352 na base 10 significa 3×100 + 5×10 + 2×1 = 352. A string 1011 na base 2 significa 1×8 + 0×4 + 1×2 + 1×1 = 11 em decimal.
A notação posicional é uma das duas grandes invenções na representação de números. A outra é a não posicional (algarismos romanos, hierático egípcio), em que os símbolos têm valores fixos independentemente da posição. Os sistemas posicionais comprimem; os não posicionais não: o número 1.888 leva quatro dígitos em decimal, mas oito caracteres em romano: MDCCCLXXXVIII.
Uma breve história das bases
Os babilônios usavam um sistema posicional de base 60 (sexagesimal) pelo menos já no período babilônico antigo, por volta de 1900-1600 a.C. As tábuas cuneiformes daquela era já usam notação posicional. Por que 60? Ele tem uma quantidade excepcionalmente alta de divisores pequenos (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60), o que tornava a aritmética de frações mais fácil em um mundo anterior às frações decimais. O legado babilônico ainda está no seu bolso: o tempo (60 segundos em um minuto, 60 minutos em uma hora) e os ângulos / coordenadas geográficas (360 graus em um círculo, 60 minutos de arco por grau, 60 segundos de arco por minuto) são descendentes diretos. Quando você lê um relógio ou uma latitude, está lendo sexagesimal.
O sistema posicional decimal como o conhecemos foi desenvolvido por matemáticos indianos nos primeiros séculos d.C. O salto conceitual que o distingue dos quadros de contagem anteriores é um símbolo escrito para o zero atuando como marcador de posição. O uso inequívoco mais antigo do zero em um contexto posicional é geralmente atribuído a Brahmagupta (628 d.C.), cujo tratado Brāhmasphuṭasiddhānta deu regras para a aritmética com o zero. O manuscrito Bakhshali mostra um uso ainda mais antigo de um ponto (bindu) como marcador de posição.
O sistema decimal viajou da Índia para o mundo islâmico nos séculos VIII-IX: o polímata persa al-Khwārizmī escreveu On the Calculation with Hindu Numerals por volta de 825 d.C. («algoritmo» e «álgebra» são descendentes etimológicos diretos do seu nome e dos títulos dos seus livros). A Europa ficou para trás. Leonardo de Pisa, conhecido como Fibonacci, introduziu formalmente os algarismos indo-arábicos na Europa latina no Liber Abaci (1202), demonstrando a sua superioridade sobre os algarismos romanos. Os algarismos romanos persistiram na contabilidade europeia até o século XVI.
Gottfried Wilhelm Leibniz descreveu um sistema numérico totalmente binário no seu artigo de 1703 Explication de l'arithmétique binaire, embora a sua motivação principal fosse filosófica (correspondência com o I Ching) em vez de prática. O salto para a computação binária veio com a dissertação de mestrado de 1937 de Claude Shannon no MIT, «A Symbolic Analysis of Relay and Switching Circuits», que mostrou que a álgebra booleana podia modelar redes de relés elétricos, tornando o binário a linguagem natural da lógica digital.
Os algoritmos de conversão
Decimal para outra base: divisão repetida. Para converter um inteiro decimal N para a base b, divida N por b, registre o resto, substitua N pelo quociente e repita até o quociente ser 0. Os restos lidos de baixo para cima são os dígitos na base b. Exemplo resolvido para 156 em binário: 156÷2 = 78 r0, 78÷2 = 39 r0, 39÷2 = 19 r1, 19÷2 = 9 r1, 9÷2 = 4 r1, 4÷2 = 2 r0, 2÷2 = 1 r0, 1÷2 = 0 r1, lendo os restos de baixo para cima: 10011100. Verifique: 128 + 16 + 8 + 4 = 156.
Outra base para decimal: método de Horner. Comece com 0; para cada dígito da esquerda para a direita, multiplique o total corrente pela base e adicione o novo dígito. Exemplo resolvido para o hex 1F4: 0×16 + 1 = 1, depois 1×16 + 15 = 31, depois 31×16 + 4 = 500.
Ambos os algoritmos rodam em tempo linear em relação ao número de dígitos, e o BigInt do JavaScript os implementa por baixo dos panos, o que é o motivo de esta ferramenta não ter teto de precisão. Um número de 200 dígitos converte de forma limpa entre quaisquer duas bases sem perda de arredondamento, da mesma forma que uma calculadora com aritmética de inteiros de precisão arbitrária faria.
As quatro bases que importam na computação
- Binário (base 2): os transistores estão ligados ou desligados, então o binário é a representação natural para a lógica digital. Toda peça de dado é, em última análise, binária.
- Octal (base 8): historicamente comum na computação inicial porque 3 dígitos binários se mapeiam de forma limpa para 1 dígito octal. Menos proeminente hoje, mas ainda usado nas permissões de arquivo do Unix (
chmod 755) e em alguns formatos de arquivo legados. - Decimal (base 10): o sistema numérico humano do dia a dia, quase com certeza porque temos dez dedos. Usado por sistemas financeiros, pela ciência, em qualquer lugar onde humanos leem números.
- Hexadecimal (base 16): exatamente 4 bits por dígito, o que significa que 1 byte = 2 caracteres hex. O padrão de fato para a representação compacta em nível de byte: códigos de cor hex (
#FF0000), endereços de memória (0x7fff...), pontos de código Unicode (U+1F600), endereços MAC, resumos de hash.
Potências de 2 que vale a pena memorizar
| Potência | Decimal | Hex | Por que importa |
|---|---|---|---|
| 2⁸ | 256 | 0x100 | Um byte; valor máximo de um canal de 8 bits (RGB) |
| 2¹⁰ | 1,024 | 0x400 | «1K» no contexto da computação |
| 2¹⁶ | 65,536 | 0x10000 | Tamanho do BMP do UTF-16; máximo do inteiro de 16 bits |
| 2²⁰ | 1,048,576 | 0x100000 | «1M» no contexto da computação |
| 2²⁴ | 16,777,216 | 0x1000000 | RGB de 24 bits («16,7M cores») |
| 2³² | ~4,3 bilhões | 0x100000000 | Máximo do inteiro sem sinal de 32 bits; espaço de endereços IPv4 |
| 2⁶⁴ | ~1.8×10¹⁹ | 0x100… | Máximo do inteiro de 64 bits; muito além da precisão de ponto flutuante |
Quando você recorreria a um conversor de base
- Ler dumps hex de um depurador, de uma captura de pacotes de rede ou de um arquivo binário. Traduzir
0xFFpara 255 de cabeça é tranquilo;0x7F4Ageralmente não é. - Códigos de cor CSS:
#FF0000é decimal (255, 0, 0). A conversão de hex para RGB é exatamente base 16 → base 10 em cada par de dois caracteres. - Permissões de arquivo do Unix:
chmod 755é octal: 7 = rwx (leitura+escrita+execução = 4+2+1), 5 = r-x (leitura+execução = 4+1), 5 de novo. Cada dígito octal é exatamente 3 bits binários. - Octetos IPv4: endereços como
192.168.1.1são quatro números de 8 bits. As máscaras de sub-rede são mais fáceis de raciocinar em binário (uma máscara/24são 24 uns seguidos de 8 zeros). - Pontos de código Unicode: os caracteres são catalogados em hex (U+2665 para ♥, U+1F600 para 😀). Existem equivalentes decimais, mas a forma hex corresponde às tabelas do Unicode.
- Aritmética de máscara de bits: feature flags, bits de permissão, valores de registradores de hardware são todos mais fáceis de ler como binário ou hex do que como decimal.
- Depurar assembly ou código desmontado: endereços, opcodes e valores imediatos são convencionalmente escritos em hex.
Outras bases que vale a pena conhecer
- Base 36: a base mais alta que cabe em alfanuméricos sem caracteres especiais (10 dígitos + 26 letras). Usada para hashes curtos de URL e alguns esquemas de codificação. O
Number.toString(36)do JavaScript a expõe diretamente. - Base 58: usada nos endereços do Bitcoin e do Ripple. Pula os caracteres facilmente confundidos
0(zero),O(O maiúsculo),I(I maiúsculo) el(L minúsculo), para que os endereços sejam robustos a erros de transcrição à mão. - Base 62: alfanumérico completo (dígitos + minúsculas + maiúsculas). Comum nos slugs de encurtadores de URL (o «abc123» em
example.com/abc123). - Base 64: codifica dados binários como ASCII imprimível para transporte por canais somente texto (e-mail, JSON, URLs). Escopo diferente desta ferramenta: ela opera sobre fluxos de bytes em vez de inteiros.
Convenções de prefixo no código-fonte
A maioria das linguagens modernas usa o mesmo conjunto de prefixos literais para desambiguar a base no código-fonte:
- Binário:
0bou0B(Python, Ruby, Java desde a 7, C++ desde o C++14, JavaScript desde o ES6, Rust). Exemplo:0b10011100. - Octal:
0oou0O(Python 3, ES6, Rust). As linguagens mais antigas da família C usam um zero inicial (0755), o que ocasionalmente é uma cilada se você, sem querer, preenche um decimal com um zero. - Hex:
0xou0X: universalmente entendido em praticamente toda linguagem de programação. - Decimal: nenhum prefixo necessário.
Mais perguntas
E os números negativos?
Os computadores representam inteiros negativos usando o complemento de dois: inverta todos os bits e some 1. Então, no complemento de dois de 8 bits, −1 é 11111111 (0xFF), −5 é 11111011 (0xFB) e −128 é 10000000 (0x80). O bit mais significativo indica o sinal. Esta ferramenta exibe os inteiros negativos com um sinal de menos inicial, em vez de uma representação em complemento de dois, porque a última só faz sentido em uma largura de bits fixa, e, como a ferramenta usa o BigInt de precisão arbitrária, não há largura fixa para interpretar.
Por que o hex usa as letras A-F?
Porque a base 16 precisa de 16 símbolos de dígitos distintos e os dígitos decimais 0-9 fornecem apenas dez. A convenção de usar A-F (sem distinção de maiúsculas e minúsculas) para 10-15 foi popularizada pelo IBM System/360 nos anos 1960 e padronizada em todo o setor. Sistemas anteriores experimentaram outros glifos (o G-15 da Bendix usava u, v, w, x, y, z), mas o A-F venceu.
Esta ferramenta lida com frações?
Não, é apenas para inteiros. A conversão de base fracionária é mais complexa porque a maioria das frações decimais não tem uma representação exata em binário (o famoso problema de ponto flutuante 0.1 + 0.2 ≠ 0.3). Para a inspeção em nível de bit de ponto flutuante, um visualizador IEEE 754 dedicado é a ferramenta certa.
Algo é enviado a um servidor?
Não. As conversões rodam no seu navegador usando a aritmética nativa BigInt do JavaScript. Nada sobre a sua entrada sai da página; a ferramenta funciona offline depois de carregada.