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 2 | 2⁷ | 2⁶ | 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:
- 0 × 2 + 1 = 1
- 1 × 2 + 0 = 2
- 2 × 2 + 1 = 5
- 5 × 2 + 1 = 11
- 11 × 2 + 0 = 22
- 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:
- 2F = 2 × 16 + 15 × 1 = 32 + 15 = 47
- 1A3 = 1 × 256 + 10 × 16 + 3 × 1 = 256 + 160 + 3 = 419
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:
- 11010110 → 1101 0110 → D6 (e D6 = 13 × 16 + 6 = 214, o mesmo número de antes)
- 101101 → complete com zeros à esquerda até 0010 1101 → 2D (= 45)
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):
- 7 = 111 = rwx
- 5 = 101 = r-x
- 5 = 101 = r-x
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
- Endereços IPv4. Cada um dos quatro números é um byte. 192.168.1.10 é 11000000.10101000.00000001.00001010 em binário; 192 = 128 + 64.
- Cores na web. Uma cor hexadecimal como #FF8800 tem três bytes: vermelho FF = 255, verde 88 = 8 × 16 + 8 = 136, azul 00 = 0, então ela equivale a rgb(255, 136, 0). O Conversor de Cor faz isso com qualquer cor.
- Texto. Em ASCII e Unicode, a letra A maiúscula tem o código 65, que é 0x41 em hexadecimal e 01000001 em binário. O a minúsculo é 97 (0x61, 01100001); os dois diferem em 32, um único bit.
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.
- Qualquer base de 2 a 64, tanto na entrada quanto na saída personalizada.
- Prefixos e maiúsculas: aceita
0b,0oe0xquando correspondem à base de entrada, e letras maiúsculas comoFFaté a base 36. Acima da base 36, letras minúsculas e maiúsculas são dígitos diferentes. - Erros claros: um dígito inválido, como um 2 em binário, mostra quais dígitos a base aceita, e um prefixo
0xcom base 10 avisa para mudar a base para 16. - Comprimento em bits: mostra quantos bits o número precisa, por exemplo 6 para 42 (101010).
- Números grandes: converte inteiros muito longos com exatidão, como um endereço IPv6 completo de 128 bits escrito como um único número.
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.