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)
Potência de 2 2⁷ 2⁶ 2⁵ 2⁴ 2⁰
Valor posicional 128 64 32 16 8 4 2 1

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:

Bit 1 1 0 1 0 1 1 0
Valor posicional 128 64 32 16 8 4 2 1
Bit × valor 128 64 0 16 0 4 2 0

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ão Quociente Resto
156 ÷ 2 78 0
78 ÷ 2 39 0
39 ÷ 2 19 1
19 ÷ 2 9 1
9 ÷ 2 4 1
4 ÷ 2 2 0
2 ÷ 2 1 0
1 ÷ 2 0 1

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ão Quociente Resto
1000 ÷ 16 62 8
62 ÷ 16 3 14 = E
3 ÷ 16 0 3

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ário Hexadecimal Decimal Binário Hexadecimal Decimal
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 A 10
0011 3 3 1011 B 11
0100 4 4 1100 C 12
0101 5 5 1101 D 13
0110 6 6 1110 E 14
0111 7 7 1111 F 15

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:

Prefixo Base Exemplo Valor decimal
0b Binário (2) 0b1011 11
0o Octal (8) 0o755 493
0x Hexadecimal (16) 0x3E8 1000

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

Decimal Binário Octal Hexadecimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
32 100000 40 20
64 1000000 100 40
100 1100100 144 64
127 1111111 177 7F
128 10000000 200 80
255 11111111 377 FF
256 100000000 400 100

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.