Pular para o conteúdo principal
CalcMax

Conversor de decimal para hexadecimal

Resultado

2A3F

Hexadecimal

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

Um conversor de decimal para hexadecimal reescreve um número inteiro da base dez na base dezesseis. O método é a mesma divisão repetida que produz o binário, com dezesseis no lugar do dois: divida o número por dezesseis, guarde o resto, divida o quociente por dezesseis e siga assim até o quociente chegar a zero. O que muda é o alfabeto. Dividir por dois só pode deixar 0 ou 1, mas dividir por dezesseis pode deixar qualquer valor de 0 a 15, e a base dezesseis escreve esses valores de dez a quinze como as letras A a F — A para 10, B para 11, até F para 15. Então os restos não saem como algarismos hexadecimais direto; eles saem como números, e todo resto acima de 9 precisa ser escrito com a sua letra antes de a resposta estar pronta. Pegue 10.815: 10.815 ÷ 16 é 675 com resto 15, depois 675 ÷ 16 é 42 com resto 3, depois 42 ÷ 16 é 2 com resto 10, e por fim 2 ÷ 16 é 0 com resto 2. Lendo de baixo para cima, os restos são 2, 10, 3, 15 — que viram 2, A, 3, F, então 10.815 se escreve 2A3F em hexadecimal. As letras são o ponto todo da página. A soma de valores posicionais impressa ao lado da resposta mostra o mesmo número pelo outro extremo: na base dezesseis as casas valem 4.096, 256, 16 e 1, e 2A3F é 2×4.096 mais 10×256 mais 3×16 mais 15, o que volta a dar 10.815. A base dezesseis é usada porque um algarismo hexadecimal é exatamente quatro algarismos binários, então um byte é sempre dois caracteres e um valor de trinta e dois bits é sempre oito — e é por isso que códigos de cor, endereços de memória e hashes são escritos assim.

Dividindo 10.815 por dezesseis, uma etapa por vez, até o quociente chegar a zero

EtapaDivisãoQuocienteResto
110815 ÷ 1667515 (F)
2675 ÷ 16423
342 ÷ 16210 (A)
42 ÷ 1602

Dois dos quatro restos desta escada estão escritos como um número seguido da sua letra entre parênteses — 15 (F) e 10 (A) —, e essa forma dupla é a razão de a tabela existir. A conta entrega 15; a resposta precisa de F. Quem divide certo e depois copia a coluna dos restos como está escreve 2103 no lugar de 2A3F, que é o único erro que esta conversão convida a cometer. Leia a coluna de baixo para cima e os caracteres da resposta aparecem em ordem: 2, 10, 3, 15, que é 2A3F depois de os dois valores acima de nove serem substituídos. A tabela fica fixa em 10.815 enquanto o painel acima converte o que você digitou, porque ela mostra o método e não um resultado. O quociente cai por um fator de mais ou menos dezesseis a cada etapa, então a escada até para a maior entrada aceita tem apenas catorze linhas — que é exatamente o comprimento do teto hexadecimal, 1FFFFFFFFFFFFF.

Fórmula

10.815 ÷ 16 = 675 r 15 → 675 ÷ 16 = 42 r 3 → 42 ÷ 16 = 2 r 10 → 2 ÷ 16 = 0 r 2 ⇒ 10.815 = 2A3F = 2×4.096 + 10×256 + 3×16 + 15

10.815
O número inteiro a converter, escrito na base dez. Um separador decimal ou um separador de milhar é recusado em vez de arredondado, então no campo de entrada escreva 10815, sem ponto e sem vírgula
÷ 16
A etapa que se repete, com dezesseis no lugar do dois que a versão binária desta página usa. Dezesseis é a base para a qual você está convertendo, então cada rodada pergunta quantos dezesseis cabem e o que sobra
quociente
A parte que segue para a etapa seguinte. O processo para quando o quociente chega a zero, o que significa que nenhuma casa mais alta da resposta é necessária
resto
O algarismo produzido por aquela rodada, e aqui ele pode ser qualquer coisa de 0 a 15 em vez de apenas 0 ou 1. Apagar essa diferença é o jeito mais comum de errar esta conversão: o resto 15 não é o algarismo 15, porque a base dezesseis não tem um caractere único para ele
A — F
As letras que representam os valores de dez a quinze, sendo A o 10, B o 11, C o 12, D o 13, E o 14 e F o 15. Elas não são uma notação separada a aprender: cada uma é apenas o número que não pôde ser escrito com um único caractere decimal
⇒ 2A3F
Os algarismos montados de baixo para cima, com todo resto acima de 9 já transformado na sua letra. O primeiro resto encontrado é o caractere mais à direita, então ler as etapas na ordem em que foram escritas dá a resposta invertida
2×4.096 + 10×256 + 3×16 + 15
A resposta lida de volta como valores posicionais. Diferente do binário, os coeficientes não são todos uns — é esta a conferência que pega uma letra convertida no número errado, porque um A trocado mudaria a soma. A página imprime essa soma como texto, sem ponto de milhar, então o 4.096 que você lê aqui aparece lá como 4096

Hexadecimal é a taquigrafia que os engenheiros leem, então esta conversão aparece sempre que um valor precisa passar de uma forma para a outra. Códigos de cor são o caso do dia a dia: um canal que vai de 0 a 255 são dois caracteres hexadecimais, e é por isso que uma cor se escreve com seis deles e que o 10.815 de um designer e o 2A3F de um programador são a mesma cor. Endereços de memória, somas de verificação, hashes e os valores de registrador de uma folha de dados são todos impressos na base dezesseis pelo mesmo motivo — quatro bits por caractere, então a largura de um valor fica legível de relance. Quem lê uma pilha de erro ou um despejo de pacotes faz esta conversão na direção contrária dezenas de vezes por hora, e quem escreve uma máscara ou um número mágico a faz nesta direção. Trabalhos escolares pedem isso diretamente, quase sempre como converta de decimal para hexadecimal e mostre o cálculo, e é exatamente isso que a escada abaixo é: uma linha por divisão, com as letras já substituídas. É também o passo que torna óbvia a largura de um valor, porque dois caracteres são um byte e oito são uma palavra de trinta e dois bits, então a conversão responde quantos caracteres um valor vai ocupar no formato para o qual ele está indo.

Exemplos resolvidos

  1. Escrevendo 10.815 em hexadecimal

    1. 10.815 ÷ 16 = 675, resto 15 — anote 15, que é F
    2. 675 ÷ 16 = 42, resto 3
    3. 42 ÷ 16 = 2, resto 10 — que é A
    4. 2 ÷ 16 = 0, resto 2 — o quociente chegou a zero, então pare
    5. Leia os restos de baixo para cima: 2, 10, 3, 15
    6. Troque 10 por A e 15 por F: a resposta é 2A3F

    O caso padrão, e o exemplo que mostra as duas substituições. Repare que dois dos quatro restos precisaram de letra, o que é típico e não azar: um resto acima de 9 aparece mais ou menos seis vezes em dezesseis, e uma resposta de três ou quatro caracteres quase sempre vai conter pelo menos um.

  2. Um byte completo, 255

    1. 255 ÷ 16 = 15, resto 15 — escreva F
    2. 15 ÷ 16 = 0, resto 15 — escreva F
    3. O quociente chegou a zero, então leia os dois restos de baixo para cima: FF

    Dois caracteres para o maior valor que um byte comporta, que é exatamente a razão de a base dezesseis existir. Vale decorar o par FF e 255: ele é o teto de um canal de cor, de um byte sem sinal na maioria das linguagens e de um caractere de dado bruto.

  3. Uma potência de dezesseis, 1.048.576

    1. 1.048.576 ÷ 16 = 65.536, resto 0
    2. 65.536 ÷ 16 = 4.096, resto 0
    3. 4.096 ÷ 16 = 256, resto 0
    4. 256 ÷ 16 = 16, resto 0
    5. 16 ÷ 16 = 1, resto 0
    6. 1 ÷ 16 = 0, resto 1 — leia de baixo para cima para chegar a 100000

    O eco em hexadecimal do exemplo da potência de dois na página binária: uma potência da base sai como um único 1 seguido de zeros. 1.048.576 é 16⁵ e também 2²⁰, e é isso que a notação resolve — o mesmo valor é 100000000000000000000 em binário e 100000 em hexadecimal, e o segundo é legível.

  4. Um número negativo

    1. O sinal de menos é transportado, não convertido: os algarismos são calculados para 10.815 como no primeiro exemplo
    2. 10.815 ÷ 16 = 675, resto 15, e assim por diante até 0 com resto 2
    3. Os algarismos lidos de baixo para cima são 2, A, 3, F
    4. O sinal vai na frente: −2A3F

    Um sinal de menos na frente é aceito e impresso adiante, e a soma de valores posicionais fica entre parênteses para que o menos se aplique à soma inteira e não ao primeiro termo dela. Repare no que isto não é: é uma leitura com sinal de um módulo, e não o padrão de bits em complemento de dois que uma máquina guardaria. Se você precisa do conteúdo de um registrador para um valor negativo, e não da notação com sinal, essa é outra pergunta e outra página.

Limitações

Esta página converte apenas números inteiros, então um separador decimal é recusado em vez de arredondado — 10815.5 não pode ser convertido aqui. Separadores de milhar também são recusados no campo de entrada: escreva 10815, não 10.815, porque o ponto seria lido como separador decimal, e adivinhar entre as duas leituras é pior do que perguntar sem rodeios. Vale notar que isso vale só para o campo: na prosa desta página os números aparecem na convenção brasileira, com ponto de milhar, como em 10.815 — no campo, porém, o ponto nunca é aceito, porque ali ele só poderia significar separador decimal. A entrada pode ter no máximo 9.007.199.254.740.991, que dá catorze caracteres hexadecimais, e sua forma hexadecimal é 1FFFFFFFFFFFFF — o mesmo teto que aparece nas páginas binárias como 53 algarismos, porque é um único limite escrito em duas bases. Zeros à esquerda e um sinal de menos na frente são aceitos; o menos produz uma leitura com sinal do módulo, e não um padrão de bits em complemento de dois. A tabela abaixo imprime a escada de 10.815 e não acompanha o número digitado. Converter na direção oposta, de hexadecimal de volta para decimal, é uma página separada, e esta não faz nenhuma conta sobre o resultado. As duas saídas — a forma hexadecimal e a soma de valores posicionais — são impressas como texto, caractere por caractere, sem separador de milhar: a separação de milhar existe na prosa, que escreve 4.096, e não na resposta impressa, que mostra 4096.

Perguntas frequentes

Como eu converto um número decimal para hexadecimal à mão?
Divida por dezesseis, anote o resto, depois divida o quociente por dezesseis e repita até o quociente ser zero. Leia os restos de baixo para cima e troque todo resto acima de 9 pela sua letra: 10 é A, 11 é B, 12 é C, 13 é D, 14 é E e 15 é F. Para 10.815 os restos saem 15, 3, 10, 2 de cima para baixo, o que lido para cima e substituído dá 2A3F.
Por que existem letras na base dezesseis?
Porque a base dezesseis precisa de dezesseis caracteres únicos e os algarismos decimais só fornecem dez. Os seis símbolos que faltam têm de vir de algum lugar, e as letras são a convenção com que todo sistema concorda. A é dez e F é quinze, então os algarismos do sistema vão de 0 a 9 e depois de A a F. Isso não é uma coisa extra para decorar por cima da conversão — uma letra é sempre apenas o nome de um resto que não coube num único caractere decimal.
Qual é o maior número decimal que posso converter aqui?
9.007.199.254.740.991, que é 1FFFFFFFFFFFFF em hexadecimal — catorze caracteres. O limite vem do mesmo lugar que o limite de 53 algarismos nas páginas binárias, porque é o mesmo número escrito em duas bases. Qualquer coisa maior é recusada com uma mensagem em vez de convertida, já que acima dessa largura uma máquina não consegue manter inteiros vizinhos separados e uma resposta convertida não poderia ser confiada.
A base dezesseis é a mesma coisa que o binário, só mais curta?
É o mesmo valor escrito numa base que é potência de dois, e é por isso que passar de uma para a outra é tão fácil. Cada caractere hexadecimal é exatamente quatro algarismos binários, então 2A3F é 0010 1010 0011 1111 sem sobrar nada. Isso não é coincidência deste exemplo: vale para todo número hexadecimal, e é a razão de a base dezesseis ser usada. Nada se perde na troca e nada precisa ser arredondado.
Posso converter um número decimal com parte fracionária?
Aqui não. Esta página aceita números inteiros, então 10815.5 é recusado em vez de arredondado. As frações na base dezesseis são bem definidas — as posições à direita do ponto valem um dezesseis avos, um duzentos e cinquenta e seis avos, e assim por diante —, mas aceitá-las exigiria decidir quantos caracteres manter e como arredondar o último, e todas as páginas deste grupo convertem números inteiros.
Por que a página imprime uma soma de valores posicionais além do número hexadecimal?
Porque é a conferência que pega o erro de substituição. Se você transformou o resto 15 na letra errada, ou usou A onde precisava de F, a soma impressa não vai voltar ao número com que você começou — 2×4.096 + 10×256 + 3×16 + 15 só dá 10.815 quando as letras foram lidas corretamente. Diferente da versão binária dessa soma, os coeficientes não são todos uns, então cada caractere da resposta responde por uma parcela própria.

Referências

Calculadoras relacionadas