Pular para o conteúdo principal
CalcMax

Conversor de hexadecimal para decimal

Resultado

10.815

Decimal

Valores posicionais
2×4096 + 10×256 + 3×16 + 15

Um conversor de hexadecimal para decimal reescreve um número hexadecimal na base dez, e ao contrário da conversão para binário esta é aritmética de verdade. O valor de um número hexadecimal é a soma de cada caractere multiplicado pela potência de dezesseis que a sua posição vale, contando do zero a partir da direita. 2A3F tem um F na última casa, então o F vale 15; um 3 na casa seguinte, que vale 3×16; um A na casa depois dessa, que vale 10×256; e um 2 na frente, que vale 2×4.096. Somando tudo dá 10.815. As letras são onde isso dá errado, e dão errado de dois jeitos. Primeiro, A precisa virar 10 e F precisa virar 15 antes de qualquer multiplicação — ler A como 1 dá uma resposta que parece plausível e está errada. Segundo, o valor que uma letra representa é multiplicado pela sua posição, então um F na última casa é 15 e um F uma casa à esquerda é 240; a letra não é a quantidade, ela é um coeficiente. As potências de dezesseis são a outra metade da página, e elas têm uma forma que vale conhecer: 1, 16, 256, 4.096, 65.536, cada uma dezesseis vezes a anterior. Ler um número hexadecimal de olho nessa lista, da direita para a esquerda, é mais rápido do que calcular qualquer das potências na hora. Como dezesseis é uma potência de dois, essas também são as potências de dois tomadas de quatro em quatro — 16 é 2⁴, 256 é 2⁸, 65.536 é 2¹⁶ —, e é por isso que as mesmas posições que comportam quatro bits carregam cada uma uma potência de dezesseis. A página imprime a soma inteira ao lado da resposta, para que o resultado possa ser conferido termo a termo: 2×4.096 + 10×256 + 3×16 + 15 é 10.815, e um erro em um único caractere aparece como uma soma que não volta ao número que você esperava.

As potências de dezesseis, da posição mais à direita até a mais larga que uma entrada aceita alcança

PosiçãoPotênciaValor
1316¹³4503599627370496
1216¹²281474976710656
1116¹¹17592186044416
1016¹⁰1099511627776
916⁹68719476736
816⁸4294967296
716⁷268435456
616⁶16777216
516⁵1048576
416⁴65536
316³4096
216²256
116¹16
016⁰1

Catorze linhas, de 16⁰ até 16¹³, e o comprimento não é arbitrário: catorze caracteres é a entrada mais larga que esta família aceita, então a tabela cobre todas as posições que uma resposta pode usar e para aí. Ler de cima para baixo é ler as posições da resposta da direita para a esquerda — a última linha é o caractere mais à direita e a primeira é o mais à esquerda. A coluna do meio é a posição escrita como potência, que é por onde a soma do painel acima multiplica; a terceira coluna é essa potência calculada, que é por onde se multiplica na prática. Esses valores formam par com as páginas binárias: 16 é 2⁴, 256 é 2⁸ e 65.536 é 2¹⁶, porque um caractere hexadecimal comporta quatro bits. Então a mesma tabela responde quanto vale um grupo de quatro bits quando ele é lido como número, e não como bits. A tabela é fixa e não acompanha o que você digitou; ela imprime essas potências sem separador de milhar, como o painel o faz na linha da soma.

Fórmula

2A3F = 2×16³ + 10×16² + 3×16¹ + 15×16⁰ = 2×4.096 + 10×256 + 3×16 + 15 = 10.815

2A3F
O número hexadecimal a converter. As letras não diferenciam maiúsculas de minúsculas, então 2a3f e 2A3F são o mesmo valor; um zero à esquerda não muda nada e um sinal de menos na frente dá um resultado negativo
16ⁿ
A potência de dezesseis ligada a uma posição, contada do zero a partir do caractere mais à direita. O mais à direita vale 16⁰, que é 1, o seguinte 16¹, que é 16, e cada passo para a esquerda multiplica por dezesseis outra vez
2, 10, 3, 15
Os caracteres lidos como valores, com as letras já substituídas — A vira 10 e F vira 15 antes de qualquer multiplicação acontecer. Ler A como 1 é o erro que esta linha existe para evitar, e é o jeito mais comum de esta conversão dar errado
2×4.096
Um termo da soma: o valor do caractere vezes a potência da sua posição. Todo caractere contribui com um termo, inclusive os que são zero, embora um termo zero não mude nada e seja simplesmente deixado de fora da soma impressa
= 10.815
O total dos termos. Ele é um número decimal, e não uma cadeia de algarismos em outra base, e é por isso que a resposta desta página pode ser usada diretamente em contas seguintes
14 caracteres
A entrada mais larga aceita, que é 1FFFFFFFFFFFFF. Catorze caracteres é o comprimento em que o valor chega a 9.007.199.254.740.991, acima do qual uma máquina não consegue manter inteiros vizinhos separados, então uma entrada mais longa é recusada em vez de convertida

Ler um valor hexadecimal como decimal é o que você faz sempre que um número escrito para uma máquina precisa ser comparado com um número escrito para uma pessoa. Um código de cor tem três canais de dois caracteres cada, e saber que FF é 255 e que 80 é 128 é a diferença entre ajustar um tom no olho e ajustá-lo por número. Medidas são a mesma história: 400 em hexadecimal é 1.024, que é um tamanho de página familiar, e um mapa de memória impresso como 0x100000 são 1.048.576 bytes para quem precisa acrescentar uma segunda região a ele. Quem confere uma soma de verificação, compara o prefixo de um hash ou converte a máscara de uma folha de dados faz esta conversão, e quem lê um número de série ou um identificador que acabou sendo hexadecimal também. Trabalhos escolares pedem isso como converta de hexadecimal para decimal, quase sempre com as potências escritas, que é exatamente a soma que esta página imprime: um termo por caractere, com as letras já substituídas. É também a conversão a que se recorre quando uma resposta hexadecimal de outra ferramenta precisa ser conferida, já que o total decimal é o número com que todos os outros podem ser comparados.

Exemplos resolvidos

  1. Lendo 2A3F

    1. Escreva as potências de dezesseis embaixo dos quatro caracteres, a partir da direita: 1, 16, 256, 4.096
    2. Troque as letras pelos seus valores: A é 10 e F é 15
    3. Multiplique cada um: 2×4.096 é 8.192, 10×256 é 2.560, 3×16 é 48, 15×1 é 15
    4. Some os quatro termos: 8.192 + 2.560 + 48 + 15 = 10.815

    O caso padrão, e aquele em que as duas letras precisam ser convertidas. O A não é um 1 e o F não é um 5 — ler a cadeia como se as letras fossem algarismos daria uma resposta de mais ou menos dois mil, que é errada o bastante para saltar aos olhos. O erro mais sutil é uma letra convertida corretamente mas multiplicada pela potência errada.

  2. Um byte completo, FF

    1. Dois caracteres, então as posições valem 16 e 1
    2. F é 15, então o caractere da esquerda contribui com 15×16 = 240
    3. O caractere da direita contribui com 15×1 = 15
    4. 240 + 15 = 255

    Dois caracteres e o maior valor que eles comportam, e é por isso que FF é 255 e não 256: a faixa começa em 00. Vale decorar esse par de cor, já que ele aparece em valores de cor, em campos do tamanho de um byte e em qualquer cadeia hexadecimal de exatamente dois caracteres.

  3. Lendo B2

    1. B é 11, então o caractere da esquerda contribui com 11×16 = 176
    2. O caractere da direita contribui com 2
    3. 176 + 2 = 178

    B fica uma casa acima de A, então 11×16 e não 10×16 — a diferença entre ler B como 11 e lê-lo como 10 é dezesseis, que é uma casa hexadecimal inteira. Este é o mesmo valor que as páginas binárias usam como exemplo de oito bits, e 10110010 é a cara dele na base dois.

  4. A maior entrada, 1FFFFFFFFFFFFF

    1. Catorze caracteres, então as posições vão de 16¹³ até 16⁰
    2. O 1 inicial vale 16¹³, que é 4.503.599.627.370.496
    3. Cada um dos treze caracteres F é 15, multiplicado pela potência da sua própria posição
    4. Somando os catorze termos dá 9.007.199.254.740.991

    Catorze termos é o máximo que esta soma alcança, e é o mesmo teto em que as páginas decimais esbarram em 9.007.199.254.740.991 e as páginas binárias em 53 algarismos. Nada no método muda nesse tamanho — é a mesma multiplicação e soma, repetida catorze vezes —, e é isso que vale tirar do exemplo.

Limitações

A entrada aqui é uma cadeia hexadecimal e não uma decimal, então não há ponto decimal a recusar: caracteres fora de 0 a 9 e de A a F é que são recusados. A entrada pode ter no máximo catorze caracteres, que é 1FFFFFFFFFFFFF, e qualquer coisa mais longa é recusada com uma mensagem em vez de truncada. Zeros à esquerda são aceitos e não mudam nada, e um sinal de menos na frente produz um resultado decimal negativo — a soma é calculada para os algarismos e o sinal é aplicado ao total. Maiúsculas e minúsculas na entrada dão no mesmo, e a soma de valores posicionais não contém letra nenhuma, porque cada letra já virou o número que ela vale antes de qualquer multiplicação: o que se lê naquela linha é 10×256, e não A×256. A tabela abaixo lista as potências de dezesseis de 16⁰ até 16¹³ e é fixa, então não acompanha o que você digitou; ela está ali para que o peso de qualquer posição possa ser consultado. Ir na direção contrária, de um número decimal para hexadecimal, é uma página separada, e esta não faz nenhuma conta sobre o resultado além da soma que imprime. A linha Valores posicionais é impressa como texto, termo a termo, sem separador de milhar: o 4.096 que a prosa desta página escreve aparece lá como 4096. A linha Decimal, essa sim, usa a separação de milhar e mostra 10.815.

Perguntas frequentes

Como eu converto hexadecimal para decimal à mão?
Escreva as potências de dezesseis embaixo dos caracteres, começando em 1 na direita e multiplicando por dezesseis a cada passo para a esquerda; depois multiplique cada caractere pela potência que está embaixo dele e some os resultados. As letras precisam ser substituídas primeiro: A é 10, B é 11, C é 12, D é 13, E é 14 e F é 15. Para 2A3F isso dá 2×4.096 + 10×256 + 3×16 + 15, que é 10.815.
O que as letras de A a F significam?
Elas são os valores de dez a quinze, em ordem: A é 10, B é 11, C é 12, D é 13, E é 14, F é 15. A base dezesseis precisa de dezesseis caracteres únicos e os algarismos decimais fornecem apenas dez, então são necessários seis símbolos a mais, e as letras são a convenção acertada. Cada letra é um coeficiente exatamente como um algarismo é, então um F vale quinze vezes o que a sua posição carregar — quinze na última casa, 240 uma casa à esquerda.
Qual é o maior número hexadecimal que posso converter aqui?
Catorze caracteres. 1FFFFFFFFFFFFF é o teto, e ele se converte em 9.007.199.254.740.991, que é a mesma fronteira que as páginas decimais enunciam como 53 algarismos binários. Uma cadeia mais longa é recusada com uma mensagem em vez de truncada ou arredondada, porque acima dessa largura uma máquina não consegue manter inteiros vizinhos separados e a resposta não poderia ser confiada.
Por que FF é 255 e não 256?
Porque a contagem começa em 00, e não em 01. Dois caracteres hexadecimais dão 256 cadeias diferentes, de 00 a FF, então o maior valor que elas podem representar é 255 — um a menos que o número de possibilidades. O mesmo erro de um aparece no binário, onde oito bits vão de 0 a 255, e é por isso que o máximo de um byte é 255 em toda linguagem que tem bytes.
Converter hexadecimal para decimal é a mesma coisa que converter hexadecimal para binário?
Não. Converter para binário é uma substituição que não precisa de aritmética: cada caractere vira quatro bits, e esse é o método inteiro. Converter para decimal é uma soma dos valores posicionais, porque as posições valem potências de dezesseis e não potências de dois — 2A3F é 2×4.096 + 10×256 + 3×16 + 15, e as letras precisam virar valores antes de qualquer multiplicação. O resultado binário da mesma cadeia é 10101000111111, e as duas respostas são a mesma quantidade escrita de dois jeitos.
Por que a página imprime as potências de dezesseis numa tabela?
Porque as potências são os pesos pelos quais cada termo da soma é multiplicado, e consultá-las é mais rápido do que calculá-las. A tabela vai de 16⁰ a 16¹³ e é completa para esta página: catorze caracteres é a entrada mais larga aceita, então nenhuma resposta aceita usa uma posição que a tabela não liste. Lê-la ao lado da soma no painel de resultados mostra qual peso pertence a qual caractere.

Referências

Calculadoras relacionadas