Como converter binário para decimal (e hex): passo a passo

Para converter binário para decimal, multiplique cada bit pelo seu valor posicional e some os resultados. Os valores posicionais são potências de 2 que dobram da direita para a esquerda: 1, 2, 4, 8, 16 e assim por diante. Por exemplo, 1011 em binário é 1×8 + 0×4 + 1×2 + 1×1 = 8 + 0 + 2 + 1 = 11.

Experimente grátis: Conversor de Base Inteira Gratuito e sem necessidade de conta.

Este guia mostra como converter binário para decimal com dois métodos, como fazer o caminho inverso, de decimal para binário, o que é hexadecimal e por que os programadores o usam, e como passar entre binário, hexadecimal e octal sem calculadora. Todos os exemplos abaixo foram conferidos com código. Para conferir seus próprios números enquanto lê, cole-os no conversor binário gratuito.

Como ler binário: valores posicionais

Código binário é informação escrita com apenas dois símbolos, 0 e 1. Os computadores o usam porque seus circuitos trabalham com dois estados, como tensão baixa e alta. Cada dígito binário se chama bit, e um grupo de 8 bits é um byte.

O binário é um sistema posicional, assim como o decimal. No decimal, cada posição vale 10 vezes a posição à sua direita (unidades, dezenas, centenas). No binário, cada posição vale 2 vezes a posição à sua direita:

Posição (a partir da direita)8ª7ª6ª5ª4ª3ª2ª1ª
Potência de 22⁷2⁶2⁵2⁴2³2²2¹2⁰
Valor posicional1286432168421

Um 1 significa "inclua este valor posicional" e um 0 significa "pule este".

Como converter binário para decimal passo a passo

Método 1: some os valores posicionais

Pegue o número binário 11010110. Escreva os valores posicionais abaixo dos bits, mantenha aqueles em que o bit é 1 e some-os:

Bit11010110
Valor posicional1286432168421
Bit × valor128640160420

128 + 64 + 16 + 4 + 2 = 214. Portanto, 11010110₂ = 214₁₀. O pequeno subscrito indica a base quando ela não é óbvia.

Método 2: dobre e some

Este método não precisa de tabela. Comece com 0 e leia os bits da esquerda para a direita: dobre o total acumulado e some o bit atual.

Para 101101:

  1. 0 × 2 + 1 = 1
  2. 1 × 2 + 0 = 2
  3. 2 × 2 + 1 = 5
  4. 5 × 2 + 1 = 11
  5. 11 × 2 + 0 = 22
  6. 22 × 2 + 1 = 45

Portanto, 101101₂ = 45. Confira pelo método 1: 32 + 8 + 4 + 1 = 45.

Como converter decimal para binário

Divisões sucessivas por 2

Divida o número por 2, anote o resto (0 ou 1) e repita com o quociente até chegar a 0. Depois leia os restos de baixo para cima. Veja o exemplo com 156:

DivisãoQuocienteResto
156 ÷ 2780
78 ÷ 2390
39 ÷ 2191
19 ÷ 291
9 ÷ 241
4 ÷ 220
2 ÷ 210
1 ÷ 201

Lendo de baixo para cima, obtemos 156 = 10011100₂. Conferência: 128 + 16 + 8 + 4 = 156. O erro mais comum é ler os restos de cima para baixo, o que dá os bits na ordem inversa.

Subtraindo potências de 2

Para números pequenos, costuma ser mais rápido pegar a maior potência de 2 que cabe, subtraí-la e repetir. Para 100: cabe 64 (100 − 64 = 36), depois 32 (36 − 32 = 4), depois 4 (4 − 4 = 0). Coloque um 1 sob 64, 32 e 4 e um 0 em todas as outras posições: 100 = 1100100₂.

O que é hexadecimal?

Hexadecimal (hex) é a base 16. Ele precisa de 16 dígitos, então, depois de 0–9, usa as letras A–F para os valores de 10 a 15: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Cada posição vale 16 vezes a posição à sua direita: 1, 16, 256, 4.096 e assim por diante.

Os programadores usam hexadecimal porque ele se alinha exatamente com o binário. Quatro bits têm 16 padrões possíveis (0000 a 1111), então um dígito hexadecimal equivale exatamente a 4 bits e dois dígitos hexadecimais equivalem exatamente a um byte. O maior byte, 11111111, é simplesmente FF em hexadecimal, enquanto em decimal é 255, um número que não revela o padrão de bits. É por isso que endereços de memória, códigos de cor, endereços MAC e endereços IPv6 são escritos em hexadecimal.

Como converter hexadecimal para decimal

Use o mesmo método dos valores posicionais com potências de 16 e substitua as letras pelos seus valores:

Como converter decimal para hexadecimal

A conversão de decimal para hexadecimal funciona como a de decimal para binário, mas dividindo por 16. Restos de 10 a 15 viram as letras de A a F. Veja o exemplo com 1000:

DivisãoQuocienteResto
1000 ÷ 16628
62 ÷ 16314 = E
3 ÷ 1603

Lendo os restos de baixo para cima, obtemos 1000 = 3E8₁₆. Conferência: 3 × 256 + 14 × 16 + 8 = 768 + 224 + 8 = 1000.

Binário para hexadecimal: agrupe os bits de quatro em quatro

Como um dígito hexadecimal equivale a quatro bits, converter binário para hexadecimal não exige nenhuma conta. Divida o número binário em grupos de quatro bits (chamados nibbles), começando pela direita, e substitua cada grupo usando esta tabela:

BinárioHexadecimalDecimalBinárioHexadecimalDecimal
000000100088
000111100199
0010221010A10
0011331011B11
0100441100C12
0101551101D13
0110661110E14
0111771111F15

Exemplos:

De hexadecimal para binário, o processo é o inverso: substitua cada dígito hexadecimal pelos seus quatro bits. 3E8 → 0011 1110 1000 → 1111101000 depois de remover os zeros à esquerda.

Octal em poucas palavras

Octal é a base 8 e usa os dígitos 0–7. Funciona como o hexadecimal, mas com grupos de três bits, porque 2³ = 8. Seu uso mais conhecido hoje são as permissões de arquivos no Unix. Em chmod 755, cada dígito representa três bits de permissão (leitura, escrita, execução):

Portanto, 755 em octal é o padrão de bits 111 101 101, que é 493 em decimal. A Calculadora Chmod transforma as caixas de permissão marcadas no número octal, ou mostra quais permissões um número como 755 define.

Onde essas conversões aparecem

Prefixos: 0b, 0x e 0o

No código, um prefixo indica ao compilador qual base um literal numérico usa:

PrefixoBaseExemploValor decimal
0bBinário (2)0b101111
0oOctal (8)0o755493
0xHexadecimal (16)0x3E81000

0x funciona em quase todas as linguagens. 0b é suportado em Python, JavaScript, Java, C# e C++. 0o é usado por Python e JavaScript, enquanto C e C++ escrevem octal com um simples zero à esquerda, então 0755 em C é 493, e não 755.

A maioria das linguagens também converte strings para você:

# Python
int("1011", 2)      # 11
bin(156)            # '0b10011100'
hex(1000)           # '0x3e8'
int("3E8", 16)      # 1000

// JavaScript
parseInt("1011", 2)     // 11
(1000).toString(16)     // "3e8"
Number("0b1011")        // 11

Uma armadilha: em JavaScript, parseInt("0b1011") retorna 0, porque parseInt para no primeiro caractere que não consegue ler e não entende o prefixo 0b. Remova o prefixo e passe a base (radix) como argumento, como explica a referência do MDN sobre parseInt.

Uma observação sobre números negativos

Os computadores geralmente armazenam inteiros negativos em complemento de dois. Para escrever −5 em 8 bits, parta de 5 = 00000101, inverta todos os bits para obter 11111010 e depois some 1: 11111011. Lido como número sem sinal, o mesmo padrão é 251 (256 − 5), ou FB em hexadecimal. É por isso que o mesmo byte pode significar −5 ou 251, dependendo de o programa tratá-lo como número com sinal ou sem sinal.

Tabela de conversão entre binário, decimal, octal e hexadecimal

DecimalBinárioOctalHexadecimal
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010
321000004020
64100000010040
100110010014464
12711111111777F
1281000000020080
25511111111377FF
256100000000400100

Converta qualquer base com o conversor binário

O conversor binário gratuito funciona no seu navegador. Digite um número e defina a base dele, e ele mostra o valor em binário, octal, decimal e hexadecimal ao mesmo tempo, além de uma base de saída personalizada.

Alguns limites que vale conhecer: ele converte apenas números inteiros não negativos, então rejeita o sinal de menos e o separador decimal; a saída hexadecimal fica em minúsculas e sem zeros à esquerda; e a linha "Base64 (64)" é um número em base 64 que usa os dígitos 0–9, a–z, A–Z, + e /, e não a codificação de texto Base64.

Perguntas frequentes

Qual é o maior número que cabe em 8 bits?

255, escrito como 11111111 em binário ou FF em hexadecimal. Oito bits dão 2⁸ = 256 padrões diferentes, que cobrem de 0 a 255. Com dezesseis bits se chega a 65.535, e cada bit extra dobra o intervalo.

Por que os programadores usam hexadecimal em vez de decimal?

Como cada dígito hexadecimal corresponde a exatamente quatro bits, dá para ler o padrão de bits direto nos dígitos hexadecimais. Um byte sempre tem dois dígitos hexadecimais (00 a FF). O decimal não tem essa correspondência: 255 e 256 parecem próximos em decimal, mas em binário são 11111111 e 100000000.

Como converter uma fração binária para decimal?

Os bits depois do ponto binário valem 1/2, 1/4, 1/8 e assim por diante. Assim, 101.11₂ = 4 + 1 + 0,5 + 0,25 = 5,75. Muitas frações decimais, como 0,1, não têm representação binária exata, e é por isso que 0.1 + 0.2 não dá exatamente 0.3 na maioria das linguagens de programação. O conversor binário trabalha apenas com números inteiros.

Código binário é a mesma coisa que ASCII?

Não. O binário é o sistema de numeração; ASCII é uma tabela que atribui um número a cada caractere. A letra A tem o código ASCII 65, e esse número é armazenado como os bits 01000001.

Experimente grátis: Conversor de Base Inteira Gratuito e sem necessidade de conta.