Conversor de base numérica

Converta entre binário, octal, decimal e hexadecimal.

Seus dados não saem do seu dispositivo
Binário (base 2)
Octal (base 8)
Decimal (base 10)
Hexadecimal (base 16)

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.

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

Potências de 2 que vale a pena memorizar

PotênciaDecimalHexPor que importa
2⁸2560x100Um byte; valor máximo de um canal de 8 bits (RGB)
2¹⁰1,0240x400«1K» no contexto da computação
2¹⁶65,5360x10000Tamanho do BMP do UTF-16; máximo do inteiro de 16 bits
2²⁰1,048,5760x100000«1M» no contexto da computação
2²⁴16,777,2160x1000000RGB de 24 bits («16,7M cores»)
2³²~4,3 bilhões0x100000000Má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

Outras bases que vale a pena conhecer

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:

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.

Ferramentas relacionadas