Pular para o conteúdo principal
CalcMax

Conversor de binário para decimal

Resultado

11

Decimal

Valores posicionais
8 + 2 + 1

Um conversor de binário para decimal transforma um número escrito na base dois no mesmo número escrito na base dez. O valor não muda — só muda a notação. Notação posicional é tudo o que está em jogo: um algarismo vale o seu valor nominal multiplicado por uma potência da base, e o sistema de numeração binária simplesmente toma o dois como essa base. Você já conhece a regra do decimal: o número 352 é três centenas mais cinco dezenas mais duas unidades, porque cada posição vale dez vezes a posição à sua direita. Em binário, as posições valem duas vezes a posição à sua direita, então elas correm 1, 2, 4, 8, 16, 32 e assim por diante, e os algarismos são apenas 0 ou 1. Converter é então somar as posições que têm um 1 e ignorar as que têm um 0: 1011 é 8 mais 2 mais 1, que dá 11. Essa soma é o que esta página imprime embaixo da resposta, um termo por bit ligado, porque é justamente o passo que as pessoas erram quando fazem de cabeça — pulam uma posição, ou começam a contagem pelo lado errado. Os algarismos são lidos da direita, e não da esquerda: o bit mais à direita vale sempre 1, qualquer que seja o comprimento do número.

O valor posicional de cada bit de um byte, do mais à esquerda até o mais à direita

BitPotênciaValor
72⁷128
62⁶64
52⁵32
42⁴16
32³8
22²4
12¹2
02⁰1

Esta é a régua com que a conversão é feita, e ela é fixa: não muda quando o número digitado acima muda, então não há contradição quando os dois parecem discordar. O painel responde pelo número que foi digitado; a tabela responde pela pergunta mais geral de quanto vale cada posição de um byte, que é a pergunta que vem primeiro quando você ainda não tem um número em mãos. Leia as linhas de cima para baixo como metades e de baixo para cima como dobros, e o padrão se explica sozinho: o bit mais à direita vale 1 porque é a casa das unidades, o bit ao lado vale 2 porque a base é dois, e cada passo para a esquerda dobra. O motivo de ela parar depois de oito linhas é que o byte é onde vivem os valores que as pessoas convertem de verdade — um sinalizador de status, um canal de cor, uma máscara de permissão — e uma tabela que fosse até o quinquagésimo terceiro bit seria uma parede de números que ninguém lê. Os bits ligados de um número são lidos nesta tabela e somados, então a tabela e a soma impressa acima dela estão descrevendo as mesmas oito posições de duas maneiras diferentes. Um aviso sobre a direção: a numeração dos bits aqui é contada da direita, então o bit 0 é o último algarismo, e um documento que conte os bits da esquerda vai discordar desta tabela em todas as linhas embora esteja dizendo a mesma coisa.

Fórmula

1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 2 + 1 = 11

binário
O número a ser lido, escrito na base dois. Os algarismos dele são 0 e 1 e nada mais, e o valor do número inteiro depende de onde cada algarismo está, e não de quantos algarismos existem
2ⁿ
O valor posicional de uma casa: dois elevado à distância dessa casa até a extremidade direita, contando a mais à direita como a posição zero. A sequência é 1, 2, 4, 8, 16, 32, 64, 128, e cada passo é o dobro do anterior
dígito × 2ⁿ
Um termo isolado da soma. Como o algarismo é 0 ou 1, a multiplicação nunca muda nada — um 1 contribui com o seu valor posicional inteiro e um 0 não contribui com nada, e é por isso que a conversão se reduz a destacar as posições que têm um 1
Σ
A soma de todos os termos. É a conversão inteira: some os valores posicionais dos bits ligados e o total é o número em decimal
8 + 2 + 1
A soma mostrada com os termos nulos descartados, que é como ela é escrita à mão. 1011 tem uns nas posições 8, 2 e 1 e um zero na posição 4, então o 4 nunca aparece — ver que ele falta é o ponto, porque é esse o passo que as pessoas perdem de vista
53 bits
O comprimento máximo da entrada: 53 algarismos binários, o que dá 9.007.199.254.740.991. É a largura em que uma máquina deixa de conseguir distinguir números inteiros vizinhos, então uma entrada mais longa não pode ser lida exatamente e é recusada em vez de adivinhada

Esta é uma conversão de que as pessoas precisam nos dois sentidos da leitura. O caso direto é um valor que chegou em binário e precisa ser entendido: um byte de status impresso por um depurador, a coluna de sinalizadores de um registrador de hardware, uma máscara de bits num arquivo de configuração, a saída de uma ferramenta de rede, ou um exercício de aula em que a resposta deve ser escrita na base dez. O caso inverso é o raciocínio com potências de dois que se esconde atrás dos números comuns — se um número é potência de dois, qual é a potência de dois seguinte acima de certo valor, quantos bits são necessários para guardar um valor, ou que faixa um barramento de determinada largura consegue endereçar — e todas essas perguntas se respondem olhando quais posições estão ligadas. Quem programa reencontra a mesma soma ao montar uma máscara de sub-rede, ao empacotar vários valores pequenos num único inteiro, ou ao verificar quais de um conjunto de opções um número guardado deixou ligadas. A saída com os valores posicionais é o que faz a página servir também como material de estudo: a regra do transporte e os pesos das posições são as duas coisas que parecem arbitrárias até a soma ser escrita por extenso, e ter a página escrevendo essa soma para o que você digitou transforma um exemplo resolvido de livro em uma conferência da sua própria tentativa. Quem lê um número binário à mão, e quem quer saber por que a resposta é aquela e não apenas qual é, tiram dela a mesma coisa.

Exemplos resolvidos

  1. Lendo 1011

    1. Escreva os valores posicionais embaixo dos quatro algarismos, da direita para a esquerda: 1, 2, 4, 8
    2. Mantenha os algarismos que são 1 e descarte os que são 0: sobram 8, 2 e 1
    3. A posição do 4 tem um 0, então ela não contribui com nada e não aparece na soma
    4. Some: 8 + 2 + 1 = 11

    O caso padrão, e o que mostra o termo que falta: 1011 tem um zero na casa dos quatros, então a soma é 8 + 2 + 1 e não 8 + 4 + 2 + 1. Ler os algarismos como se fossem decimais daria mil e onze, que é o jeito mais comum de essa conversão dar errado.

  2. Lendo um byte inteiro, 10110010

    1. Oito algarismos significa que os valores posicionais vão de 128 até 1
    2. As posições ligadas são 128, 32, 16 e 2
    3. Some: 128 + 32 = 160, mais 16 dá 176, mais 2 dá 178
    4. O maior valor que um byte comporta é 11111111, que é 255

    Vale percorrer uma vez porque o byte é a largura com que praticamente todo valor binário aparece na prática, e saber que o bit mais à esquerda vale 128 e o mais à direita vale 1 é o que torna um byte legível de relance. Os mesmos oito algarismos lidos da outra ponta dariam outra coisa, então a direção não é um detalhe.

  3. Zeros à esquerda não mudam o valor

    1. Os quatro zeros à esquerda ficam nas posições 128, 64, 32 e 16
    2. Um zero não contribui com nada, onde quer que esteja, então essas posições saem da soma
    3. O que resta é o mesmo 8 + 2 + 1 de antes, que dá 11

    Preencher um valor até uma largura fixa é normal — quando a largura importa, um byte é escrito 00001011 e não 1011 — então o conversor precisa aceitar as duas formas e dar a mesma resposta para cada uma. Ele dá, e a soma que ele imprime é idêntica porque os zeros à esquerda nunca entram nela.

  4. Lendo um valor negativo, −1011

    1. O sinal de menos não faz parte do número binário — é um sinal na frente dele
    2. Leia os algarismos como antes: 1011 é 8 + 2 + 1 = 11
    3. Recoloque o sinal: o valor é −11

    O sinal fica fora dos algarismos em vez de ser dobrado para dentro deles, porque aqui não existe largura fixa onde dobrá-lo. Um processador guardando −11 em oito bits escreveria 11110101, que é uma cadeia de algarismos completamente diferente e depende de se saber que a largura é oito. Esta página não tem largura, então o sinal continua sendo um sinal.

Limitações

Esta página lê apenas números binários inteiros. Não existe ponto binário, então uma entrada com ponto ou com vírgula entre os algarismos é recusada e não pode ser convertida — uma leitura fracionária precisaria de uma segunda regra sobre onde o ponto fica, e essa regra teria de ser declarada a cada entrada em vez de presumida. A entrada pode ter no máximo 53 algarismos, o que dá 9.007.199.254.740.991 em decimal; valores mais longos não podem ser guardados exatamente por uma máquina e são recusados em vez de arredondados. Zeros à esquerda são aceitos e ignorados, então 00001011 e 1011 são o mesmo número, e a soma impressa para os dois é idêntica. Um sinal de menos na frente é aceito e levado para as duas saídas. A página converte de binário para decimal; o sentido contrário é outra página, indicada mais abaixo, e as leituras hexadecimais ficam numa terceira. Ela não faz aritmética nem operações bit a bit — não há AND, OR, XOR nem deslocamento aqui. A linha Valores posicionais é impressa como texto, termo a termo e sem separador de milhar, de modo que numa entrada longa ela lista os valores posicionais sem nenhuma separação de milhares; a linha Decimal é a única que segue a convenção brasileira de separar milhares por ponto.

Perguntas frequentes

Como eu converto binário em decimal à mão?
Escreva os valores posicionais embaixo dos algarismos, começando em 1 à direita e dobrando a cada passo para a esquerda — 1, 2, 4, 8, 16 e assim por diante. Depois mantenha os valores que ficam embaixo de um 1, jogue fora os que ficam embaixo de um 0, e some o que sobrou. Para 1011 isso dá 8, 2 e 1, ou seja, 11. As duas maneiras de errar são ler os algarismos da esquerda em vez da direita e somar um valor posicional que tem um zero embaixo — e a soma impressa nesta página mostra as duas, porque ela lista apenas os termos que contam.
Por que a resposta não inclui os valores posicionais que têm um zero embaixo?
Porque eles não contribuem com nada, e escrevê-los esconderia a parte que importa. Zero vezes qualquer valor posicional é zero, então um termo como 0×4 pode ser descartado sem mudar o total. A soma é mostrada como 8 + 2 + 1 em vez de 8 + 0 + 2 + 1 exatamente para que o quatro que falta fique visível: ver quais posições estão ausentes é como você confere se alinhou os algarismos corretamente desde o início.
Um zero à esquerda muda o número?
Não. Zeros à esquerda ocupam posições que não contribuem com nada, exatamente como em decimal, onde 007 continua sendo sete. 00001011 e 1011 são o mesmo número, e esta página dá as mesmas duas saídas para os dois. Preencher até uma largura fixa é comum quando a largura tem significado — um byte costuma ser escrito com os oito algarismos — então aceitar a forma preenchida é necessário, e não uma conveniência.
Qual é o maior número binário que eu posso converter aqui?
53 algarismos, o que dá 9.007.199.254.740.991 em decimal. O limite não é uma escolha desta página: é a largura em que um número de máquina deixa de conseguir distinguir inteiros vizinhos, então uma entrada mais longa não poderia ser lida exatamente e a página teria de imprimir algo que parece uma resposta sem ser uma. Uma entrada mais longa é recusada com uma mensagem. Isso pesa mais aqui do que nas páginas de aritmética, porque converter soa como ler, e ler soa como não ter limite.
Isto é a mesma coisa que dividir por dois repetidamente?
Dá a mesma resposta por outro caminho. A divisão repetida por dois produz os algarismos a partir da direita, e é o método a usar no outro sentido — de decimal para binário. De binário para decimal, a soma dos valores posicionais é mais curta, porque os algarismos já são conhecidos e só os pesos deles precisam ser somados. Os dois estão certos; a soma é o que esta página imprime, porque é a que dá para conferir de relance.
Posso converter um número binário com parte fracionária?
Aqui não. Esta página lê números inteiros, então um ponto binário é rejeitado em vez de adivinhado. Frações em binário são perfeitamente bem definidas — as posições à direita do ponto valem um meio, um quarto, um oitavo, e assim por diante — mas uma página que as aceitasse precisaria decidir quantas mostrar e como arredondar a última, e esta família de páginas trabalha com números inteiros do começo ao fim. Manter essa fronteira no mesmo lugar em todas as páginas do grupo faz com que a mesma entrada nunca seja aceita por uma página e recusada por outra.

Referências

Calculadoras relacionadas