Hexadecimal Calculator
Some, subtraia e converta números hexadecimais. Realize aritmética hexadecimal e converta para decimal ou binário. Calculadora matemática grátis com resultados instantâneos.
<section class="content-section">
<h2>Entendendo Hexadecimal (Base-16): Fundamentos</h2>
<p>Hexadecimal (hex) é um sistema numeral posicional com base 16. Ele usa dezesseis símbolos distintos: os dígitos 0–9 representam valores de zero a nove, e as letras A–F (ou a–f) representam valores de dez a quinze. Um dígito hexadecimal representa exatamente quatro bits binários (um "nibble"), tornando o hex a maneira mais natural de representar dados binários em um formato legível para humanos.</p>
<p>O valor posicional de cada dígito hex é uma potência de 16. Para o número hex 2F4:</p>
<ul>
<li>2 está na posição 16² (256): 2 × 256 = 512</li>
<li>F (15) está na posição 16¹ (16): 15 × 16 = 240</li>
<li>4 está na posição 16⁰ (1): 4 × 1 = 4</li>
<li>Total: 512 + 240 + 4 = <strong>756 decimal</strong></li>
</ul>
<p>Convertendo decimal para hex: divida repetidamente por 16 e registre os restos (dígito mais à direita primeiro). 756 ÷ 16 = 47 R 4; 47 ÷ 16 = 2 R 15 (F); 2 ÷ 16 = 0 R 2. Leia os restos de baixo para cima: 2F4₁₆ ✓. Na maioria das linguagens de programação, literais hex são prefixados com <code>0x</code>: <code>0x2F4</code> = 756.</p>
</section>
<section class="content-section">
<h2>Tabela de Conversão de Hex para Decimal</h2>
<p>Referência rápida para converter dígitos hexadecimais únicos e valores hex comuns para decimal:</p>
<table>
<thead><tr><th>Hex</th><th>Decimal</th><th>Binário</th><th>Significado Comum</th></tr></thead>
<tbody>
<tr><td>0x00</td><td>0</td><td>0000 0000</td><td>Byte nulo, falso, desligado</td></tr>
<tr><td>0x01</td><td>1</td><td>0000 0001</td><td>Verdadeiro, habilitado</td></tr>
<tr><td>0x0A</td><td>10</td><td>0000 1010</td><td>Caractere de nova linha (LF)</td></tr>
<tr><td>0x0D</td><td>13</td><td>0000 1101</td><td>Retorno de carro (CR)</td></tr>
<tr><td>0x1F</td><td>31</td><td>0001 1111</td><td>Separador de unidade</td></tr>
<tr><td>0x20</td><td>32</td><td>0010 0000</td><td>Caractere de espaço (ASCII)</td></tr>
<tr><td>0x41</td><td>65</td><td>0100 0001</td><td>'A' em ASCII</td></tr>
<tr><td>0x61</td><td>97</td><td>0110 0001</td><td>'a' em ASCII (minúsculo)</td></tr>
<tr><td>0x7F</td><td>127</td><td>0111 1111</td><td>Caractere DEL; par de nibbles assinado máximo</td></tr>
<tr><td>0x80</td><td>128</td><td>1000 0000</td><td>Bit de sinal definido (negativo em byte assinado)</td></tr>
<tr><td>0xFF</td><td>255</td><td>1111 1111</td><td>Byte não assinado máximo; todos os bits definidos</td></tr>
<tr><td>0x100</td><td>256</td><td>1 0000 0000</td><td>Um a mais que o byte máximo</td></tr>
<tr><td>0xFFFF</td><td>65,535</td><td>16 uns</td><td>Valor máximo não assinado de 16 bits</td></tr>
<tr><td>0xFFFFFF</td><td>16,777,215</td><td>24 uns</td><td>Máximo de 24 bits (16M cores)</td></tr>
</tbody>
</table>
<p>A relação entre hex e binário é direta: cada dígito hex mapeia exatamente para 4 bits. A = 1010, B = 1011, C = 1100, D = 1101, E = 1110, F = 1111. Convertendo 0xAB para binário: A=1010, B=1011 → 10101011₂ = 171₁₀.</p>
</section>
<section class="content-section">
<h2>Aritmética Hexadecimal: Adição, Subtração, Multiplicação</h2>
<p>A aritmética hexadecimal segue as mesmas regras da aritmética decimal, mas carrega e empresta em 16 em vez de 10. Entender a aritmética hex é essencial para programação em assembly, sistemas embarcados e leitura de saída de compiladores.</p>
<p><strong>Exemplo de adição:</strong> 3A + 27. Unidades: A + 7 = 10 + 7 = 17 = 1×16 + 1 → escreva 1, carregue 1. Dezenas: 3 + 2 + 1 (carregamento) = 6. Resultado: 61₁₆ = 97₁₀. Verifique: 58 + 39 = 97 ✓.</p>
<p><strong>Exemplo de subtração:</strong> C3 − 5F. Unidades: 3 < F (15), então empreste: 3 + 16 − 15 = 4, e carregue 1 para a próxima coluna. Dezenas: C (12) − 5 − 1 (empréstimo) = 6. Resultado: 64₁₆ = 100₁₀. Verifique: 195 − 95 = 100 ✓.</p>
<p><strong>Exemplo de multiplicação:</strong> 1A × 3. A × 3 = 30 = 1E₁₆ (escreva E, carregue 1). 1 × 3 + 1 = 4. Resultado: 4E₁₆ = 78₁₀. Verifique: 26 × 3 = 78 ✓.</p>
<p>Para cálculos hex complexos, converter para decimal, calcular e converter de volta é frequentemente mais confiável, a menos que você tenha muita prática. No entanto, entender a aritmética hex constrói intuição para layout de memória, registradores de CPU e representação de dados.</p>
</section>
<section class="content-section">
<h2>Hex em Design Web: Códigos de Cor</h2>
<p>Códigos de cor em HTML e CSS são uma das aplicações mais visíveis do hexadecimal fora da programação. As cores são expressas como #RRGGBB, onde cada canal varia de 00 (0 intensidade) a FF (255 = intensidade total). Isso dá 256³ = 16.777.216 cores possíveis.</p>
<table>
<thead><tr><th>Cor Hex</th><th>Vermelho</th><th>Verde</th><th>Azul</th><th>Nome da Cor</th></tr></thead>
<tbody>
<tr><td>#FF0000</td><td>255</td><td>0</td><td>0</td><td>Vermelho puro</td></tr>
<tr><td>#00FF00</td><td>0</td><td>255</td><td>0</td><td>Verde puro (limão)</td></tr>
<tr><td>#0000FF</td><td>0</td><td>0</td><td>255</td><td>Azul puro</td></tr>
<tr><td>#FFFF00</td><td>255</td><td>255</td><td>0</td><td>Amarelo</td></tr>
<tr><td>#FF00FF</td><td>255</td><td>0</td><td>255</td><td>Magenta</td></tr>
<tr><td>#00FFFF</td><td>0</td><td>255</td><td>255</td><td>Ciano</td></tr>
<tr><td>#FFFFFF</td><td>255</td><td>255</td><td>255</td><td>Branco</td></tr>
<tr><td>#000000</td><td>0</td><td>0</td><td>0</td><td>Preto</td></tr>
<tr><td>#808080</td><td>128</td><td>128</td><td>128</td><td>Cinza médio</td></tr>
<tr><td>#FF5733</td><td>255</td><td>87</td><td>51</td><td>Laranja-avermelhado vívido</td></tr>
</tbody>
</table>
<p>O CSS também suporta cores hex de 4 dígitos (#RGBA) e 8 dígitos (#RRGGBBAA), onde AA é o canal alfa (00 = transparente, FF = opaco). Cores em forma curta (#RGB) expandem repetindo cada dígito: #F3A = #FF33AA.</p>
<p>Designers web frequentemente ajustam cores modificando valores hex. Adicionar ao canal vermelho torna as cores mais quentes; subtrair as torna mais frias. Cores hex com valores iguais de R, G e B sempre produzem tons de cinza. Uma cor como #7F7F7F é exatamente 50% cinza (127 de 255 em cada canal).</p>
</section>
<section class="content-section">
<h2>Hex na Programação: Endereços de Memória e Manipulação de Bits</h2>
<p>Na programação de sistemas, hex é a linguagem natural para endereços de memória, flags de bits e registradores de hardware. Todo programador que trabalha em C, C++, assembly ou sistemas embarcados encontra hex constantemente.</p>
<p><strong>Endereços de memória:</strong> Em um sistema de 32 bits, os endereços variam de 0x00000000 a 0xFFFFFFFF (4 GB). Faixas de endereços comuns: 0x00000000–0x00FFFFFF (memória baixa), 0x7FFFFFFF (máximo inteiro assinado positivo de 32 bits), 0x80000000 (início do espaço negativo em interpretação assinada), 0xFFFFFFFF (máximo não assinado de 32 bits). Em sistemas de 64 bits, o espaço do usuário normalmente ocupa 0x0000000000000000–0x00007FFFFFFFFFFF.</p>
<p><strong>Manipulação de bits com máscaras hex:</strong> Operações de bits são expressas naturalmente em hex porque se alinham com limites de nibble.</p>
<table>
<thead><tr><th>Operação</th><th>Expressão</th><th>Efeito</th></tr></thead>
<tbody>
<tr><td>Definir bit 3</td><td>x |= 0x08</td><td>Forçar bit 3 para 1, deixar os outros inalterados</td></tr>
<tr><td>Limpar bit 3</td><td>x &= ~0x08</td><td>Forçar bit 3 para 0, deixar os outros inalterados</td></tr>
<tr><td>Alternar bit 3</td><td>x ^= 0x08</td><td>Inverter bit 3, deixar os outros inalterados</td></tr>
<tr><td>Verificar bit 3</td><td>(x & 0x08) != 0</td><td>Testar se o bit 3 está definido</td></tr>
<tr><td>Extrair nibble baixo</td><td>x & 0x0F</td><td>Obter os 4 bits inferiores</td></tr>
<tr><td>Extrair nibble alto</td><td>(x >> 4) & 0x0F</td><td>Obter os 4 bits superiores do byte</td></tr>
</tbody>
</table>
<p><strong>Constantes hex famosas:</strong> Programadores criaram constantes memoráveis para depuração e inicialização: 0xDEADBEEF (usado para marcar memória não inicializada em antigos sistemas IBM), 0xCAFEBABE (número mágico de arquivo de classe Java), 0xFEEDFACE (formato binário Mach-O mágico), 0x0BADF00D (sentinela de depuração de memória), 0xDEADC0DE (usado na detecção de falhas do iOS). Essas constantes aparecem inequivocamente em dumps hex, tornando-as fáceis de identificar durante a depuração.</p>
</section>
<section class="content-section">
<h2>Assinaturas de Formato de Arquivo e Forense Hexadecimal</h2>
<p>Cada formato de arquivo tem uma sequência característica de bytes no início chamada "número mágico" ou assinatura de arquivo. Editores hexadecimais e ferramentas de forense digital usam essas assinaturas para identificar tipos de arquivo independentemente da extensão do arquivo. Conhecer assinaturas de arquivos é essencial para recuperação de dados, análise de malware e forense digital.</p>
<table>
<thead><tr><th>Tipo de Arquivo</th><th>Assinatura Hex (primeiros bytes)</th><th>Representação ASCII</th></tr></thead>
<tbody>
<tr><td>Imagem JPEG</td><td>FF D8 FF</td><td>ÿØÿ</td></tr>
<tr><td>Imagem PNG</td><td>89 50 4E 47 0D 0A 1A 0A</td><td>.PNG....</td></tr>
<tr><td>Documento PDF</td><td>25 50 44 46</td><td>%PDF</td></tr>
<tr><td>Arquivo ZIP</td><td>50 4B 03 04</td><td>PK..</td></tr>
<tr><td>Imagem GIF</td><td>47 49 46 38</td><td>GIF8</td></tr>
<tr><td>Executável ELF (Linux)</td><td>7F 45 4C 46</td><td>.ELF</td></tr>
<tr><td>Executável PE do Windows</td><td>4D 5A</td><td>MZ</td></tr>
<tr><td>Áudio MP3</td><td>FF FB ou 49 44 33</td><td>ÿû ou ID3</td></tr>
<tr><td>Banco de dados SQLite</td><td>53 51 4C 69 74 65</td><td>SQLite</td></tr>
</tbody>
</table>
<p>Profissionais de segurança usam hex para examinar arquivos binários sem confiar na extensão do arquivo. Um arquivo chamado "document.pdf" que começa com 4D 5A é na verdade um executável do Windows — um truque comum de malware. A análise hex de pacotes de rede revela estruturas de protocolo, cabeçalhos de criptografia e potenciais explorações.</p>
</section>
<section class="content-section">
<h2>Comparação de Bases Numéricas: Decimal, Binário, Octal, Hex</h2>
<p>Computadores usam diferentes bases numéricas para diferentes propósitos. Entender como elas se relacionam ajuda na leitura de documentação técnica, depuração e programação de sistemas.</p>
<table>
<thead><tr><th>Decimal</th><th>Binário (base 2)</th><th>Octal (base 8)</th><th>Hex (base 16)</th></tr></thead>
<tbody>
<tr><td>0</td><td>0000</td><td>0</td><td>0</td></tr>
<tr><td>8</td><td>1000</td><td>10</td><td>8</td></tr>
<tr><td>10</td><td>1010</td><td>12</td><td>A</td></tr>
<tr><td>15</td><td>1111</td><td>17</td><td>F</td></tr>
<tr><td>16</td><td>0001 0000</td><td>20</td><td>10</td></tr>
<tr><td>64</td><td>0100 0000</td><td>100</td><td>40</td></tr>
<tr><td>128</td><td>1000 0000</td><td>200</td><td>80</td></tr>
<tr><td>255</td><td>1111 1111</td><td>377</td><td>FF</td></tr>
<tr><td>256</td><td>1 0000 0000</td><td>400</td><td>100</td></tr>
<tr><td>1024</td><td>100 0000 0000</td><td>2000</td><td>400</td></tr>
</tbody>
</table>
<p>Octal (base 8) era comum na computação (aparece nas permissões de arquivo Unix: chmod 755 = 111 101 101 em binário = rwxr-xr-x). Hex substituiu amplamente o octal para a maioria dos propósitos porque 4 bits por dígito (hex) se alinha melhor com arquiteturas modernas de 8 bits, 16 bits, 32 bits e 64 bits do que 3 bits por dígito (octal).</p>
</section>
<section class="content-section faq-section">
<h2>Perguntas Frequentes</h2>
<details>
<summary>Como faço para converter rapidamente entre hex e binário?</summary>
<p>Cada dígito hex corresponde exatamente a 4 bits binários: 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000, 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111. Para converter 0xB7: B=1011, 7=0111 → 10110111₂. Para converter 11001010₂: divida em nibbles: 1100=C, 1010=A → 0xCA.</p>
</details>
<details>
<summary>Por que as cores CSS usam hexadecimal?</summary>
<p>CSS usa hex porque cada canal RGB (0-255) cabe exatamente em 2 dígitos hex (00-FF). O formato #RRGGBB é compacto, inequívoco e mapeia diretamente para o modelo de cor de 24 bits usado por hardware de exibição. O HTML adotou cores hex nos anos 1990 a partir das definições de cores X11, e a convenção permaneceu padrão desde então.</p>
</details>
<details>
<summary>O que 0xFF equivale em decimal?</summary>
<p>0xFF = 15×16 + 15 = 240 + 15 = 255. Em binário, FF = 1111 1111, significando que todos os 8 bits estão definidos. 255 é o valor máximo de um byte não assinado (uint8), a intensidade máxima para cada canal de cor RGB, e aparece constantemente em redes (255.255.255.255 é o endereço de broadcast) e computação.</p>
</details>
<details>
<summary>Qual é a diferença entre 0x1F e 0xF1?</summary>
<p>Esses são números diferentes com os mesmos dígitos em ordem diferente. 0x1F = 1×16 + 15 = 31 decimal. 0xF1 = 15×16 + 1 = 241 decimal. Em binário: 0x1F = 0001 1111; 0xF1 = 1111 0001. O valor posicional importa, assim como 19 ≠ 91 em decimal.</p>
</details>
<details>
<summary>Quantos dígitos hex eu preciso para representar um número de 32 bits?</summary>
<p>Exatamente 8 dígitos hex (já que 16⁸ = 2³², cobrindo todos os valores de 32 bits de 0x00000000 a 0xFFFFFFFF). Endereços de memória em sistemas de 32 bits são mostrados como números hex de 8 dígitos. Para números de 64 bits, você precisa de 16 dígitos hex (0x0000000000000000 a 0xFFFFFFFFFFFFFFFF).</p>
</details>
<details>
<summary>O que significa o prefixo "0x" em números hexadecimais?</summary>
<p>O prefixo "0x" é uma convenção de notação usada em C e na maioria das linguagens de programação para indicar que o número seguinte é hexadecimal. "0x" significa "hex" (o 'x' sugere hexadecimal). Outras notações: 'h' no final em assembly (FFh), '#' no início em CSS e alguns contextos (#FF0000), e o prefixo $ em algumas linguagens mais antigas ($FF).</p>
</details>
<details>
<summary>Como o hex é usado em endereços IP?</summary>
<p>Endereços IPv4 (por exemplo, 192.168.1.1) podem ser expressos em hex: cada octeto em hex. 192.168.1.1 = 0xC0 0xA8 0x01 0x01 = 0xC0A80101. Endereços IPv6 já são escritos em hex: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Isso torna a manipulação de endereços IPv6 muito mais fácil com aritmética hex.</p>
</details>
<details>
<summary>O que é um editor hex e quando eu usaria um?</summary>
<p>Um editor hex exibe e edita arquivos como bytes brutos em hexadecimal. Usos comuns: examinar assinaturas de formato de arquivo para identificar tipos de arquivo, editar arquivos de salvamento de jogos binários, engenharia reversa de software, analisar capturas de rede, recuperar dados de arquivos danificados e forense digital. Editores hex populares incluem HxD (Windows), hex fiend (Mac) e xxd (ferramenta de linha de comando Unix).</p>
</details>
<details>
<summary>Por que o hexadecimal é usado em vez do decimal na computação?</summary>
<p>Porque computadores operam em binário (base 2), e 16 = 2⁴ — hex se alinha perfeitamente com binário. Um dígito hex = 4 bits, dois dígitos hex = 1 byte (8 bits), quatro dígitos hex = 16 bits, oito dígitos hex = 32 bits. Decimal não tem tal correspondência limpa com potências de 2, tornando o hex muito mais natural para expressar dados binários de forma compacta.</p>
</details>
<details>
<summary>Como faço para converter uma cor hex para valores RGB?</summary>
<p>Divida a cor hex de 6 dígitos em três grupos de 2 dígitos: #RRGGBB. Converta cada um de hex para decimal. Exemplo: #4A90E2 → R=0x4A=74, G=0x90=144, B=0xE2=226. Então esta cor é rgb(74, 144, 226) — um azul médio. Para reverter: converta cada valor decimal para 2 dígitos hex e concatene: rgb(255, 87, 51) → #FF5733.</p>
</details>
</section>
<section class="content-section">
<h2>Hexadecimal em Redes e Protocolos</h2>
<p>Redes de computadores usam hexadecimal extensivamente. Endereços MAC — os identificadores de hardware para interfaces de rede — são escritos como 6 bytes hex separados por dois-pontos ou hífens: por exemplo, <code>00:1A:2B:3C:4D:5E</code>. Os três primeiros bytes (00:1A:2B) identificam o fabricante (Identificador Único Organizacional, OUI), enquanto os três últimos (3C:4D:5E) identificam o dispositivo específico.</p>
<p>Endereços IPv6 são 128 bits expressos como 8 grupos de 4 dígitos hex: <code>2001:0DB8:AC10:FE01:0000:0000:0000:0000</code>. Zeros à esquerda dentro de grupos podem ser omitidos e grupos consecutivos de todos os zeros comprimidos com "::", dando <code>2001:DB8:AC10:FE01::</code>. Entender hex é essencial para ler endereços IPv6, máscaras de sub-rede e tabelas de roteamento.</p>
<p>Quadros Ethernet, pacotes IP, segmentos TCP — todos têm campos expressos em hex em ferramentas de análise de rede como Wireshark. Um pacote TCP SYN mostra o campo de flags como 0x002 (apenas o bit SYN definido); um SYN-ACK mostra 0x012 (bits SYN + ACK definidos). Ler esses valores hex diretamente de capturas de pacotes é uma habilidade fundamental de solução de problemas de rede.</p>
</section>
<section class="content-section">
<h2>Unicode e Hex: Codificação de Caracteres</h2>
<p>Unicode, o padrão universal de codificação de caracteres, atribui a cada caractere um ponto de código expresso em hex. O Plano Multilíngue Básico abrange de U+0000 a U+FFFF. Exemplos:</p>
<table>
<thead><tr><th>Caractere</th><th>Ponto de Código Unicode</th><th>Codificação UTF-8 (hex)</th><th>Descrição</th></tr></thead>
<tbody>
<tr><td>A</td><td>U+0041</td><td>41</td><td>Letra maiúscula latina A</td></tr>
<tr><td>α</td><td>U+03B1</td><td>CE B1</td><td>Letra grega minúscula alfa</td></tr>
<tr><td>€</td><td>U+20AC</td><td>E2 82 AC</td><td>Símbolo do euro</td></tr>
<tr><td>中</td><td>U+4E2D</td><td>E4 B8 AD</td><td>Caractere chinês "meio"</td></tr>
<tr><td>😀</td><td>U+1F600</td><td>F0 9F 98 80</td><td>Emoji de rosto sorridente</td></tr>
<tr><td>©</td><td>U+00A9</td><td>C2 A9</td><td>Símbolo de copyright</td></tr>
</tbody>
</table>
<p>UTF-8 codifica caracteres ASCII (U+0000 a U+007F) em 1 byte idêntico ao seu valor ASCII. Caracteres U+0080 a U+07FF usam 2 bytes, U+0800 a U+FFFF usam 3 bytes, e caracteres além de U+FFFF (como a maioria dos emojis) usam 4 bytes. Essa codificação de comprimento variável, toda representada em hex, é o motivo pelo qual entender hex ajuda ao depurar problemas de codificação de texto em aplicativos web.</p>
</section>
<section class="related-section">
<h2>Calculadoras Relacionadas</h2>
<ul class="related-grid">
<li><a href="/percentage-calculator/">Calculadora de Porcentagem</a></li>
<li><a href="/fraction-calculator/">Calculadora de Frações</a></li>
<li><a href="/square-root-calculator/">Calculadora de Raiz Quadrada</a></li>
<li><a href="/standard-deviation-calculator/">Calculadora de Desvio Padrão</a></li>
<li><a href="/scientific-notation-calculator/">Calculadora de Notação Científica</a></li>
</ul>
</section>