~/pt/articles/porque-os-programadores-usam-hexadecimal.html 200 OK
PT

Porque é que os programadores usam hexadecimal

Por MICKAEL GOMES CONSULTING · Última atualização: 2026-06-19

Os programadores usam hexadecimal porque este se alinha de forma limpa com o binário que os computadores realmente guardam, mantendo-se muito mais curto e legível. Cada algarismo hexadecimal corresponde a exatamente quatro bits binários, pelo que dois algarismos hexadecimais descrevem um byte de oito bits. Esta relação arrumada de quatro para um permite aos programadores ler e escrever dados de máquina em bruto sem se afogarem em longas sequências de zeros e uns.

Nibbles e bytes

Um grupo de quatro bits chama-se nibble, e um nibble pode conter dezasseis valores distintos, de 0000 a 1111. É exatamente a gama de um único algarismo hexadecimal, 0 a F, o que não é coincidência: o hexadecimal foi escolhido precisamente porque dezasseis é dois elevado a quatro. Dois nibbles formam um byte, a unidade fundamental da memória, portanto qualquer byte de 0 a 255 escreve-se com dois caracteres hexadecimais, de 00 a FF.

Este alinhamento explica por que motivo um valor de byte como 11010110 em binário passa a um sereno D6 em hexadecimal. O primeiro nibble 1101 é D e o segundo nibble 0110 é 6. Converter entre binário e hexadecimal não exige qualquer cálculo assim que se conhecem os dezasseis padrões de nibble, e é por isso que os programadores experientes traduzem os dois de cabeça.

Endereços de memória e despejos de dados

Quando um programa estoira ou um depurador para, mostra muitas vezes endereços de memória e bytes em bruto. Estes aparecem em hexadecimal porque os endereços são grandes números binários e o hexadecimal mantém-nos compactos e alinhados. Um endereço como 0x00007FFE é muito mais fácil de comparar e memorizar do que a sua forma binária de 32 bits. Os editores hexadecimais mostram o conteúdo dos ficheiros da mesma maneira, dois caracteres por byte, para que um programador consiga percorrer a estrutura de relance.

Padrões de bits e máscaras

O hexadecimal também torna a manipulação de bits legível. Uma máscara como 0xFF isola o byte de menor peso, 0x0F isola o nibble de menor peso, e 0x80 seleciona o bit de maior peso de um byte. Como cada algarismo hexadecimal é uma fatia fixa de quatro bits, vê-se de relance que bits uma constante toca. O decimal esconde essa estrutura, o binário é demasiado comprido para percorrer, por isso o hexadecimal fica no justo meio-termo prático e tornou-se a notação por omissão da programação de baixo nível.

Porquê hexadecimal e não octal

O octal, o sistema em base 8, era popular nas máquinas antigas cujo tamanho de palavra era um múltiplo de três bits, porque um algarismo octal corresponde de forma limpa a três bits. O hardware moderno é antes construído à volta do byte de oito bits, e três não divide oito de forma exata, pelo que um algarismo octal atravessa desajeitadamente as fronteiras de byte. Um algarismo hexadecimal cobre quatro bits, dois cobrem exatamente um byte e quatro cobrem uma palavra de dezasseis bits, por isso o hexadecimal alinha-se muito mais limpamente com as arquiteturas orientadas ao byte de hoje do que o octal alguma vez o fez.

Esse alinhamento é a razão prática por que o hexadecimal venceu. Ler um despejo de memória em octal obriga a reagrupar mentalmente os bits por cima das fronteiras de byte, ao passo que em hexadecimal cada byte é sempre dois algarismos arrumados nas mesmas colunas. O octal ainda sobrevive nalguns recantos, como os códigos de permissão de ficheiros do Unix, mas para inspecionar bytes em bruto o hexadecimal é a norma.

Ordenação de bytes e valores multibyte

Os valores maiores do que um byte são guardados como uma sequência de bytes, e a ordem desses bytes chama-se ordenação de bytes (endianness). Uma máquina big-endian guarda primeiro o byte de maior peso, ao passo que uma máquina little-endian, como a maioria dos processadores de secretária, guarda primeiro o byte de menor peso. O valor de 32 bits 0x12345678 fica disposto na memória como os bytes 78 56 34 12 num sistema little-endian. Como o hexadecimal mostra cada byte como um par distinto de dois algarismos, torna a ordem dos bytes visível de relance, que é exatamente o que precisa ao depurar formatos de ficheiro ou protocolos de rede.

Fontes