Conversor Binário para Decimal

Conversor Binário para Decimal

Converta binário para decimal com nosso conversor e calculadora. Suporta complemento de dois com sinal, bits fracionários e cálculo passo a passo.

Cenários Pré-configurados:
Painel de Controle & Entrada de Fluxo Binário
8 bits

Sincronização bidirecional: modificar o decimal recalcula o fluxo binário instantaneamente.

Barra de Operações Bit a Bit
Decimal (Ativo)-8
Complemento de Dois-8
Hexadecimal (0x)0xF8
Arquitetura Ativa8 bits
Espectro Dinâmico de Pesos Posicionais & Curva de Potência5 Bits Ativos (Popcount)
0123456797%Casas Decimais
Indicador de Capacidade do Acumulador97.25%
Decimal (Base 10)
Hexadecimal (Base 16 Hex)0xF8
Octal (0o)0o370
Pré-visualização ASCII / UTF-8·
Pré-visualização BCD (Compactado)0010 0100 1000
Base64—
Central de Sintaxe & Código para DesenvolvedoresLiterais de matrizes, sintaxes de inicialização e máscaras hexadecimais para desenvolvedores.
Métrica Principal8 bits (8 total)
Eficiência / Capacidade5 / 8 (62.5%)
Saída Líquida-8
Referência técnica e guia de arquitetura

Conversor Binário para Decimal & Guia — Guia de referência

Converta números binários para decimal com nosso conversor e calculadora de alta precisão. Suporte a complemento de dois com sinal, bits fracionários e cálculo passo a passo.

Conversor Binário para Decimal & Guia — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados
Conversor Binário para Decimal & Guia — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados

Parâmetros-chave e controles

Sequência binária posicional (binaryPositionalString)Sequência posicional em base 2 ({0, 1})

Sequência contínua de dígitos binários avaliada por meio de acumulação polinomial pelo método de Horner em O(n), representando potências de dois do MSB ao LSB. Aceita pontos fracionários de base (radix point) no padrão IEEE 754, prefixos padrão '0b' e delimitadores visuais.

Padrão: 11010110
Largura de bits da palavra (wordBitWidth)Limite de palavra da arquitetura (8 | 16 | 32 | 64 | BigInt)

Limite de registrador do processador de destino que estabelece limites de estouro aritmético (overflow), posicionamento do bit de sinal e restrições de extensão com zeros. Valores que excedem 53 bits transitam automaticamente para BigInt de precisão arbitrária para evitar o truncamento da mantissa segundo o padrão IEEE 754.

Padrão: 8 bits (Byte: -128 a 127 com sinal / 0 a 255 sem sinal)
Codificação de sinal inteiro (integerSignEncoding)Padrão de inteiros binários (Sem sinal | Complemento de dois | Complemento de um | Sinal e magnitude)

Convenção matemática que rege a interpretação de valores negativos. O complemento de dois atribui peso negativo de -2^(n-1) ao MSB; Sem sinal trata todos os bits como magnitudes não negativas até 2^n - 1; Sinal e magnitude reserva o bit n-1 exclusivamente para a polaridade.

Padrão: Complemento de dois (com sinal)
Bits fracionários de base (fractionalRadixBits)Mantissa binária em ponto fixo (b_{-1} * 2^-1 + b_{-2} * 2^-2 ...)

Bits fracionários posicionados à direita do ponto de base, avaliados como expoentes inteiros negativos de base 2 (0,5, 0,25, 0,125, 0,0625 etc.). Frações racionais não terminantes são limitadas à profundidade de mantissa do registrador de destino.

Padrão: 0.1011 (0,6875 decimal)
Ordem de bytes endianness (byteEndiannessOrder)Sequência de bytes na memória (Big-Endian MSB | Little-Endian LSB)

Serialização sequencial de bytes em palavras binárias multi-octeto. O padrão Big-Endian (Network Byte Order da RFC 791) alinha o MSB no deslocamento de byte 0, enquanto o Little-Endian (x86-64 / ARM NEON) armazena o LSB primeiro, exigindo realinhamento por troca de bytes (byte-swap) durante a inspeção de pacotes de rede.

Padrão: Big-Endian (posicional padrão)
Formato de agrupamento em nibbles (nibbleChunkingFormat)Delimitador visual de exibição (Nibble de 4 bits | Octeto de 8 bits | Nenhum)

Configuração de espaçamento que agrupa os dígitos binários em nibbles legíveis de 4 bits ou octetos de 8 bits para acelerar a inspeção visual de paridade e prevenir erros de transposição em transcrições manuais, sem alterar os valores matemáticos.

Padrão: Espaçamento em nibbles de 4 bits

Dicas profissionais e melhores práticas

Assimetria de intervalo no complemento de dois e o perigo de overflow

Em um sistema em complemento de dois de n bits, os valores abrangem um intervalo assimétrico de -2^(n-1) a +2^(n-1) - 1 (por exemplo, de -128 a +127 em 8 bits, ou de -2.147.483.648 a +2.147.483.647 em 32 bits). Como o zero (00000000) ocupa uma posição na partição não negativa, o valor mais negativo (-2^(n-1)) não possui correspondente positivo equivalente. Tentar negar -128 ou calcular abs(-128) em um registrador com sinal de 8 bits dispara imediatamente uma falha de estouro aritmético (overflow) ou retorna ciclicamente para -128 (wrap-around). Compiladores e rotinas criptográficas (como aritmética modular em tempo constante em implementações de Web Crypto) evitam essa armadilha expandindo o sinal das entradas para limites de palavra maiores (por exemplo, de int8_t para int16_t) antes da inversão matemática.

Inexatidão de ponto flutuante binário em frações decimais na base 10

Uma fração é finita em determinada base numérica se e somente se todos os fatores primos do seu denominador irredutível dividirem a base. Em binário (base 2), o único fator primo é 2. Consequentemente, frações decimais simples cujos denominadores contenham o fator primo 5 (como 0,1 = 1/(2*5) ou 0,2 = 1/5) geram expansões binárias dízimas periódicas infinitas: 0.0001100110011..._2. Ao serem armazenadas em registradores de ponto flutuante binário IEEE 754 de 64 bits, a mantissa é truncada em 53 bits, introduzindo um erro de arredondamento intrínseco de 0,1000000000000000055511151231257827021181583404541015625. Cálculos financeiros e criptográficos nunca devem usar conversões de float binário; utilize dimensionamento racional exato (pares de BigInt de numerador / denominador) ou representações BCD em ponto fixo.

Discrepância entre deslocamento aritmético e lógico para binários negativos com sinal

Ao dividir inteiros binários com sinal por potências de dois usando deslocamento de bits (bitwise shift), executar um deslocamento lógico à direita (>>> em JavaScript, SHR em x86 ASM) insere bits zero no MSB, o que corrompe o bit de sinal e transforma instantaneamente inteiros negativos com sinal em números positivos gigantescos sem sinal (por exemplo, -8 >>> 1 resulta em 2.147.483.644 no espaço de 32 bits). Em contrapartida, um deslocamento aritmético à direita (>> em C/Java/JS, SAR em x86 ASM) replica o MSB pelas posições vagas deslocadas (extensão de sinal). Observe que o deslocamento aritmético à direita arredonda em direção ao infinito negativo (floor(N / 2^k)), o que significa que -7 >> 1 resulta em -4, enquanto a divisão inteira decimal comum trunca em direção a zero (-7 / 2 = -3).

Troca de endianness multibyte entre redes e arquiteturas de processadores

Padrões da IETF (RFC 791 IPv4, RFC 2460 IPv6, TCP/UDP) determinam a Network Byte Order, que é estritamente Big-Endian (MSB armazenado no endereço de memória mais baixo). Ambientes de execução de clientes modernos (x86-64, ARM Apple Silicon) executam nativamente em modo Little-Endian (LSB no endereço mais baixo). Desserializar uma string binária de porta de 16 bits '00000001 10111011' (decimal 443 para HTTPS) diretamente em um registrador da máquina hospedeira sem invocar primitivas de inversão de bytes (como ntohs() ou DataView.prototype.getUint16(offset, false)) inverte os octetos para '10111011 00000001', avaliando para o valor decimal 47.873 e causando falhas de roteamento na conexão.

Método de Horner em O(n) linear vs exponenciação de base em sandboxes de navegador

Implementações ingênuas de binário para decimal calculam o valor de cada bit por meio de chamadas isoladas de exponenciação (soma de b_i * 2^i), exigindo O(n^2) operações de bits para uma string de n bits e provocando estrangulamento de CPU (CPU throttling) em motores JavaScript de thread única diante de grandes fluxos de bits (como chaves criptográficas RSA de 4096 bits). O algoritmo ideal emprega o método de Horner: inicialize um acumulador em 0 e itere do MSB ao LSB executando acumulador = (acumulador << 1) | bit em uma única passagem O(n). Em ambientes isolados (sandbox) no lado do cliente, combinar essa acumulação bit a bit em O(n) com BigInt nativo garante execução em submilissegundos sem bloquear o loop de eventos (event loop) do navegador nem transmitir material criptográfico sensível pela rede.

Armadilhas comuns e solução de problemas

⚠️Inversão acidental de sinal devido à remoção de zeros à esquerda

Na avaliação em complemento de dois com sinal, o bit mais significativo (MSB) atua como indicador de sinal. Se você inserir um inteiro positivo de 8 bits como 01111111 (+127) e um parser remover automaticamente o zero à esquerda considerando-o espaço em branco redundante, a string é reduzida para os 7 bits 1111111. Ao ser avaliada contra uma estrutura com sinal de 7 bits, o 1 mais à esquerda passa a ser interpretado como bit de sinal, interpretando erroneamente +127 como -1 (-64 + 32 + 16 + 8 + 4 + 2 + 1 = -1). Solução: Declare explicitamente a largura de palavra da arquitetura de destino (8, 16, 32 ou 64 bits) para aplicar o preenchimento com zeros (zero-padding) no registrador, garantindo que os zeros à esquerda sejam preservados como delimitadores de polaridade positiva.

⚠️Limite de precisão de inteiros seguros de 53 bits do JavaScript excedido

Os tipos primitivos Number no padrão ECMAScript estão em conformidade com o formato de ponto flutuante de precisão dupla IEEE 754, alocando 52 bits para a fração mais 1 bit implícito à esquerda. Converter sequências binárias com mais de 53 bits (como endereços de memória de 64 bits ou blocos de estado SHA-256) usando parseInt(str, 2) provoca desvio silencioso de bits, arredondando os bits menos significativos além de Number.MAX_SAFE_INTEGER (9.007.199.254.740.991 ou 2^53 - 1). Solução: Faça o parse de sequências binárias que excedam 53 bits diretamente para BigInt nativo usando BigInt('0b' + cleanBinaryStr) ou acumulação de Horner com BigInt, que suporta larguras de bits arbitrárias sem qualquer perda na mantissa.

⚠️Dízimas binárias periódicas infinitas divergindo na representação decimal

Ao converter frações decimais racionais em números binários em ponto fixo, as frações cujos denominadores possuem fatores primos além de potências de 2 geram sequências binárias periódicas infinitas (por exemplo, 0,3333... ou 0,1 em decimal). Tentar calcular a representação decimal exata de uma fração binária truncada arbitrariamente sem controlar os limites racionais gera discrepâncias visíveis de precisão. Solução: Defina um limite rigoroso de precisão fracionária (por exemplo, 32 ou 64 bits de mantissa) e utilize aritmética de frações racionais (pares de BigInt P/Q) em conjunto com as regras de desempate por arredondamento para o par mais próximo (round-to-nearest-even) do padrão IEEE 754 para preservar a equivalência matemática exata.

⚠️Contaminação por prefixos de base ou formatação de espaços na entrada binária

Colar sequências binárias brutas a partir de desmontagens (disassembly dumps), capturas de pacotes do Wireshark ou inspetores de memória frequentemente introduz prefixos de linguagem ('0b', '0B'), escapes hexadecimais, delimitadores de bytes (espaços, sublinhados, hifens, dois-pontos) ou quebras de linha finais. Motores de conversão de inteiros padrão rejeitam caracteres não numéricos retornando NaN ou exceções de sintaxe. Solução: Encaminhe a entrada por meio de uma sanitização determinística com regex (`s.replace(/^0b/i, '').replace(/[^01.]/g, '')`) que elimine artefatos léxicos e valide a unicidade do ponto de base em tempo O(n) antes da transformação numérica.

Perguntas frequentes (FAQ)

Como converter binário para decimal passo a passo?▼

Para converter um número binário para decimal, multiplique cada dígito binário (bit) por 2 elevado à potência do seu peso posicional com índice zero (começando em 0 no LSB mais à direita) e some os produtos: Decimal = ∑ (b_i × 2^i). Por exemplo, para converter o binário 11010110_2 para decimal: (1 × 2^7) + (1 × 2^6) + (0 × 2^5) + (1 × 2^4) + (0 × 2^3) + (1 × 2^2) + (1 × 2^1) + (0 × 2^0) = 128 + 64 + 0 + 16 + 0 + 4 + 2 + 0 = 214 em decimal na base 10. Alternativamente, o método polinomial de Horner calcula essa expressão da esquerda para a direita em tempo O(n): inicie com o acumulador em 0 e, para cada bit, multiplique o acumulador por 2 e some o bit.

Como o complemento de dois representa números binários negativos em decimal?▼

Na notação em complemento de dois, o bit mais significativo (MSB) possui um peso posicional negativo igual a -2^(n-1), enquanto todos os outros n-1 bits restantes mantêm pesos posicionais positivos: Decimal = (-b_{n-1} × 2^{n-1}) + ∑_{i=0}^{n-2} (b_i × 2^i). Para um valor binário com sinal de 8 bits 11111000_2, o valor decimal é (-1 × 2^7) + (1 × 2^6) + (1 × 2^5) + (1 × 2^4) + (1 × 2^3) + 0 + 0 + 0 = -128 + 64 + 32 + 16 + 8 = -8. Para converter um decimal negativo de volta para complemento de dois, inverta todos os bits do seu equivalente positivo e adicione 1.

Qual é a diferença entre números binários com sinal e sem sinal?▼

A diferença fundamental entre números binários com e sem sinal está na forma como o bit mais significativo (MSB) é interpretado: o binário sem sinal atribui a todos os n bits um peso não negativo (intervalo: 0 a 2^n - 1), enquanto o binário com sinal utiliza o MSB como indicador de polaridade via complemento de dois (intervalo: -2^(n-1) a +2^(n-1) - 1). Por exemplo, a sequência de 8 bits 11111111 resulta em 255 em notação sem sinal, mas representa -1 em complemento de dois com sinal. Selecionar uma convenção de sinal incorreta provoca falhas graves de underflow aritmético ou erros de estouro circular em registradores de software.

Como converter um número binário com ponto decimal para decimal?▼

Para converter um número binário fracionário com ponto de base (radix point) para decimal, some as potências positivas de 2 para os bits inteiros à esquerda do ponto e as potências negativas de 2 (2^-j) para os bits fracionários à direita: Decimal = ∑ (b_i × 2^i) + ∑ (b_{-j} × 2^{-j}). Por exemplo, para o binário 1011.1101_2: a parte inteira é 8 + 0 + 2 + 1 = 11; a parte fracionária é (1 × 2^-1 = 0,5) + (1 × 2^-2 = 0,25) + (0 × 2^-3 = 0) + (1 × 2^-4 = 0,0625) = 0,8125. Somando ambas as partes obtém-se 11,8125 em decimal.

Por que os computadores utilizam binário em vez de decimal?▼

Os computadores usam binário em vez de decimal porque transistores semicondutores físicos operam com amplas margens de ruído e nenhuma ambiguidade elétrica em dois estados bem definidos: saturação LIGADO (tensão alta, representando o 1 lógico) e corte DESLIGADO (tensão nula ou aterramento, representando o 0 lógico). Um computador eletrônico decimal na base 10 exigiria a distinção de 10 limiares de tensão muito próximos (por exemplo, 0,3 V, 0,6 V, 0,9 V), sofrendo degradação severa provocada por ruído térmico, envelhecimento de componentes e correntes de fuga capacitiva, ao passo que o chaveamento binário integra-se de forma direta com a álgebra booleana e as portas lógicas CMOS.

Por que o parseInt do JavaScript gera resultados incorretos para binários de 64 bits?▼

A função parseInt() do JavaScript converte strings binárias em floats de precisão dupla segundo o padrão IEEE 754, que fornecem apenas 53 bits de precisão inteira exata em seu significando (Number.MAX_SAFE_INTEGER = 2^53 - 1 = 9.007.199.254.740.991). Ao processar um inteiro binário de 64 bits que ultrapassa 53 bits, os 11 bits menos significativos são arredondados para o valor em ponto flutuante representável mais próximo, provocando corrupção silenciosa de dados. Para conversões completas de 64 ou 128 bits com ou sem sinal, deve-se usar BigInt nativo de precisão arbitrária: BigInt('0b' + binaryString).

Ferramentas e utilitários relacionados

Todas as ferramentas →