Desenvolvimento

Binário, hexadecimal e decimal: o mesmo número escrito de três formas

A base só decide como uma quantidade é escrita. Qual usar depende de quem vai ler: uma pessoa ou um circuito.

Binário, hexadecimal e decimal são três maneiras de escrever o mesmo número. A base é simplesmente quantos dígitos o sistema tem antes de esgotá-los e abrir uma coluna nova: dois em binário, dez em decimal, dezesseis em hex. 11111111, 255 e FF são uma única quantidade escrita de três jeitos. Decimal é o que as pessoas usam para contar, binário é o que o hardware guarda fisicamente, e o hex existe porque um dígito hexadecimal equivale exatamente a quatro dígitos binários: é binário que você consegue ler sem se perder.

O que significa a base de um número

Uma base é a quantidade de símbolos disponíveis para os dígitos. O decimal tem dez, de 0 a 9. O binário tem dois, então os esgota na hora e as colunas se acumulam rápido. O hex precisa de dezesseis símbolos e, como só herdamos dez, as letras A a F foram convocadas para valer de 10 a 15.

Cada coluna vale a base vezes a coluna à sua direita. O 507 decimal é 5×100 mais 0×10 mais 7×1. O 101 binário é 1×4 mais 0×2 mais 1×1, ou seja, cinco. O 1F4 hexadecimal é 1×256 mais 15×16 mais 4×1, ou seja, quinhentos. A quantidade nunca muda. O que muda é só a notação, e por isso “converter para binário” é uma expressão um pouco enganosa: nada é trocado como acontece com moeda. Você está reescrevendo um número que já estava ali.

Os três são sistemas posicionais, e um sistema posicional precisa de um zero para marcar uma coluna vazia. Foi justamente isso que os números romanos nunca tiveram: sem valor posicional não há coluna vazia e, sem coluna vazia, não é preciso um símbolo que signifique nenhum.

Por que os computadores usam binário

Porque dois estados são a coisa mais fácil de construir e a mais difícil de ler errado. Um fio está acima de um limiar de tensão ou abaixo dele; uma célula de memória está carregada ou não está. A distância entre os dois é grande, então o ruído precisa ser enorme para que um 0 pareça um 1. Espremer dez níveis em um único fio exigiria nove limiares, e cada limiar é mais um lugar onde errar.

Mais de dois níveis são usados, sim, onde a densidade compensa o trabalho. Uma célula de memória flash guarda vários bits mantendo um entre muitos níveis de carga, e a Ethernet gigabit sobre cobre envia cinco níveis de tensão por símbolo. Mas isso é sinalização e armazenamento. A lógica que faz a aritmética continua binária.

Já tentaram do outro jeito. O ENIAC contava em decimal com contadores em anel, de dez posições cada um, e o IBM 650 e o 1620 também eram máquinas decimais. O decimal também não sumiu depois: os processadores mainframe e POWER da IBM implementam ponto flutuante decimal em hardware, porque frações binárias não conseguem representar 0,01 de forma exata e isso importa quando os números são valores em dinheiro. O que mudou foi o alicerce. Tudo o que está acima do silício —seus inteiros, seu texto, seus JPEGs— é uma convenção montada sobre interruptores que só conhecem ligado e desligado.

Bits, bytes e por que 255 aparece o tempo todo

Um dígito binário é um bit. Oito bits são um byte, e oito bits têm dois elevado a oito, ou seja 256, combinações possíveis: de 0 a 255. Esse único fato explica uma quantidade enorme de curiosidades que, de outro modo, pareceriam arbitrárias. Um canal de cor de 8 bits vai de 0 a 255. Cada parte de um endereço IPv4 vai de 0 a 255. Incontáveis limites de “comprimento máximo” em formatos de arquivo antigos param em 255 porque o comprimento era guardado em um único byte.

Por que o hex existe em vez de simplesmente usar binário

Dezesseis é dois elevado a quatro, então um dígito hexadecimal cobre exatamente quatro bits e nunca fica no meio de dois grupos. Converter de um para o outro é consultar uma tabela, não fazer conta: você troca cada grupo de quatro bits por um único caractere e pronto. É só por isso que o hex venceu.

A economia é real. Um valor de 32 bits são 32 caracteres em binário ou 8 caracteres em hex. Leia 11011110101011011011111011101111 em voz alta e você se perde; DEADBEEF você lê uma vez e guarda.

BinárioHexDecimal
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

Essas dezesseis linhas são todo o hex que existe. Decore-as e um dump de memória fica legível.

Como converter entre eles na mão

De binário para hex, e de volta

Divida os bits em grupos de quatro começando pela direita, complete com zeros o grupo mais à esquerda e troque cada grupo pelo seu dígito hexadecimal. 110110101 vira 0001 1011 0101, que na tabela se lê 1B5. No sentido contrário, expanda cada dígito hexadecimal nos seus quatro bits e descarte os zeros à esquerda.

Começar pela direita faz diferença. Agrupe 110110101 a partir da esquerda e você obtém DA1, que parece um número hexadecimal perfeitamente comum e não é o que você pediu.

De decimal para binário

Essa é a direção incômoda, porque dez não tem relação limpa com dois. Dois métodos funcionam. Divida repetidamente por dois e anote os restos, depois leia-os de baixo para cima. Ou subtraia repetidamente a maior potência de dois que couber e marque um 1 em cada coluna que você usou.

Pegue 200. Ele contém 128, sobram 72. Contém 64, sobram 8. Contém 8, não sobra nada. As colunas 128, 64 e 8 estão em um e o resto em zero, então 200 é 11001000 —e agrupado de quatro em quatro, 1100 1000, que é C8 em hex.

Fazer isso na mão é um bom jeito de entender o mecanismo e um jeito lento de tirar trabalho da frente. Digitar o número em um conversor que mostra as quatro bases de uma vez é mais rápido, e ele não arredonda escondido: usa inteiros de precisão arbitrária, então um valor de 200 dígitos volta com cada dígito intacto. Mas ele só aceita inteiros. Não converte 3.75, e para na base 36 porque não existe alfabeto combinado depois do z.

Onde você encontra cada base na prática

Binário mesmo você quase nunca digita. Ele aparece quando bits individuais carregam significados separados: flags de permissão, máscaras de sub-rede, registradores de hardware, um bitfield no cabeçalho de um protocolo.

Por que o octal ainda existe?

Porque oito é dois ao cubo, então um dígito octal equivale exatamente a três bits, e as permissões do Unix vêm em grupos de três. Em chmod 755, o 7 é 111: leitura, escrita, execução. O 5 é 101: leitura e execução, sem escrita. Depois que você enxerga os bits, 644 e 755 deixam de parecer números mágicos.

Fora desse canto, é herança. As máquinas que tornaram o octal normal empacotavam texto em caracteres de seis bits, e seis bits são dois dígitos octais exatos contra um incômodo dígito hexadecimal e meio. A palavra do IBM 7090 tinha 36 bits; a do PDP-8, 12. O hex assumiu quando o byte de oito bits assumiu, porque um byte são dois dígitos hexadecimais exatos.

O que dá errado quando as bases se misturam

Um zero à esquerda pode significar octal. Em C, e em JavaScript fora do modo estrito, 011 é nove, não onze. O Python 3 recusa essa forma e obriga você a escrever 0o11. Números preenchidos com zeros colados de uma planilha caem nisso o tempo todo.

Inteiros grandes perdem dígitos em silêncio. Números em JavaScript são doubles, exatos apenas até dois elevado a 53: 9007199254740992. Acima disso, parseInt e toString(16) devolvem o valor representável mais próximo, sem erro e sem aviso. Se você está convertendo um snowflake ID ou um hash, precisa de aritmética com BigInt, senão está convertendo um número parecido com o seu em vez do seu.

O hex sozinho não diz o sinal. Em 8 bits, FF é 255 sem sinal e −1 com sinal, e os bits são idênticos nos dois casos. O complemento de dois guarda um negativo dando a volta na largura do dado, que é também por que um byte com sinal vai de −128 a 127 e não de −128 a 128: o zero ocupa uma das posições positivas.

Base64 não é base 64. É uma codificação de texto que fatia um fluxo de bytes em grupos de seis bits e mapeia cada um para um caractere imprimível. Ela nunca trata a entrada como um número, então um conversor de bases não consegue produzi-la e um decodificador Base64 é outra ferramenta resolvendo outro problema.

Então qual você deve usar?

Decimal quando uma pessoa está lendo uma quantidade: preços, contagens, durações. Hex quando o valor é na verdade um monte de bits e você quer vê-los: bytes, endereços, cores, qualquer coisa despejada da memória. Binário quando bits individuais têm significados individuais e você precisa conferir um deles.

E sempre marque a base. 0x para hex, 0b para binário, 0o para octal, em toda linguagem que aceite esses prefixos. 10 escrito sem prefixo pode ser dois, oito, dez ou dezesseis, e a diferença é descoberta depois, por outra pessoa, em produção.

O conversor de bases numéricas daqui faz as quatro bases de uma vez enquanto você digita, mostra a contagem de bits e de bytes e mantém a forma em complemento de dois em 8, 16, 32 e 64 bits num painel embaixo — que costuma ser a parte pela qual você veio quando um valor aparece como negativo e você não consegue ver por quê. Ele aceita apenas inteiros, de qualquer tamanho.

A outra metade de ler dados crus é saber o que os bytes representam. A codificação de URL é o caso do dia a dia: assim que você consegue ler dois dígitos hexadecimais, um link cheio de sinais de porcentagem volta a ser texto comum.

Perguntas frequentes

Qual é a diferença entre binário, hexadecimal e decimal?

São os mesmos números escritos com quantidades diferentes de dígitos: dois em binário, dez em decimal e dezesseis em hexadecimal. 11111111, 255 e FF significam uma única quantidade. A base muda a notação, nunca o valor.

Por que os programadores usam hexadecimal em vez de binário?

Porque 16 é 2 elevado a 4, então um dígito hexadecimal equivale exatamente a quatro bits e a conversão é consultar uma tabela em vez de fazer conta. Um valor de 32 bits ocupa 32 caracteres em binário e só 8 em hexadecimal. É a mesma informação, quatro vezes mais curta e muito mais fácil de ler em voz alta.

Como converto binário para hexadecimal rapidamente?

Agrupe os bits de quatro em quatro começando pela direita, complete com zeros o grupo mais à esquerda e troque cada grupo pelo seu dígito hexadecimal. 110110101 vira 0001 1011 0101, que é 1B5. Agrupar pela esquerda em vez da direita dá a resposta errada.

Hexadecimal é mais rápido para o computador do que decimal?

Não. O hardware trabalha em binário independentemente de como você escreveu o número, e a notação é descartada no momento em que o valor é parseado. O hex é uma conveniência para quem lê o código, não uma escolha de desempenho.

O que significa 0x antes de um número?

Marca os dígitos seguintes como hexadecimais. 0x10 é dezesseis, não dez, e 0x1F é 31. A mesma convenção dá 0b para binário e 0o para octal. Sem prefixo, uma sequência de dígitos é ambígua, e um zero à esquerda sozinho significa octal em várias linguagens.

Por que 255 é um limite tão comum?

Porque é o maior número que cabe em um byte: oito bits dão 256 combinações, contadas a partir de 0. Canais de cor, partes de endereço IPv4 e muitos limites de formatos de arquivo antigos param aí por esse motivo.

Última atualização 19 de setembro de 2026