Skip to content

Cisco CCNAv7 - Sistema hexadecimal

Escrever endereços longos em binário é cansativo e cheio de chances de erro. Imagine ler 11000000101010000000101000000001 em voz alta. Para resolver isso, a informática usa o sistema hexadecimal, que representa muitos bits com poucos caracteres. Neste post, você vai aprender como ele funciona e como converter valores, e vai ver onde ele aparece nos endereços MAC e IPv6.

O hexadecimal (ou hex) é um sistema numérico de base 16. Ele usa 16 símbolos:

  • os dígitos 0 a 9 (valores de 0 a 9), e
  • as letras A a F (valores de 10 a 15).
DecimalHexadecimalBinário (4 bits)
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111

Cada dígito hexadecimal corresponde a exatamente 4 bits (um nibble). Dois dígitos hexa representam 1 byte (8 bits).

flowchart LR
  A["Binário: 1100 0000"] --> B["Hexadecimal: C 0"]

É por isso que o hexa é tão prático: a conversão com o binário é direta, sem contas.

Como indicar que um número é hexadecimal?

Section titled “Como indicar que um número é hexadecimal?”

Como 10 pode ser decimal, binário ou hexa, usam-se marcadores:

MarcadorExemploOnde aparece
Prefixo 0x0xC0Programação, documentação técnica
Sufixo hC0hDocumentação, assembly
Prefixo ##C0A800Cores em HTML e CSS
Sem marcadorC0MAC e IPv6 (o contexto já informa)
  1. Separe o número em grupos de 4 bits, da direita para a esquerda.
  2. Converta cada grupo para um dígito hexa usando a tabela.

Exemplo: 11000000

Grupo11000000
HexaC0

Resultado: C0

Exemplo: 10101000 → 1010 = A, 1000 = 8 → A8

Converta cada dígito para 4 bits.

Exemplo: 3F

Dígito3F
Binário00111111

Resultado: 00111111

Cada posição vale uma potência de 16. Para dois dígitos: dígito da esquerda × 16 + dígito da direita.

Posição16¹16⁰
Valor161

Exemplo: C0

C vale 12, então: 12 × 16 + 0 × 1 = 192 + 0 = 192.

Exemplo: A8

A vale 10, então: 10 × 16 + 8 × 1 = 160 + 8 = 168.

Exemplo: FF

F vale 15, então: 15 × 16 + 15 × 1 = 240 + 15 = 255.

Divida o número por 16 e anote o quociente e o resto. O quociente é o dígito da esquerda, e o resto é o da direita.

Exemplo: converter 100 para hexa

DivisãoQuocienteResto
100 ÷ 1664

Quociente 6 e resto 4 resultam em 64 em hexa. Conferindo: 6 × 16 + 4 = 100 ✔.

Exemplo: converter 255 para hexa

DivisãoQuocienteResto
255 ÷ 1615 (F)15 (F)

Resultado: FF.

DecimalBinárioHexa
10000010100A
31000111111F
60001111003C
1000110010064
1281000000080
17210101100AC
19211000000C0
25511111111FF

O endereço MAC tem 48 bits (6 bytes). Escrito em binário seria enorme. Em hexa, são 12 dígitos, em 6 pares:

FormatoExemplo
Com dois pontos00:1A:2B:3C:4D:5E
Com hífens00-1A-2B-3C-4D-5E
Com pontos (estilo Cisco)001A.2B3C.4D5E

Cada par é 1 byte. Os três primeiros bytes costumam identificar o fabricante (OUI), e os três últimos, a placa específica.

Um endereço IPv6 tem 128 bits, escritos em 8 grupos de 4 dígitos hexa, separados por dois pontos:

FormatoExemplo
Completo2001:0db8:acad:0001:0000:0000:0000:0010
Abreviado2001:db8:acad:1::10

128 bits ÷ 4 = 32 dígitos hexa. Escrever os 128 bits em binário exigiria 128 caracteres. Em hexa, só 32.

Você verá as regras de abreviação do IPv6 no módulo de endereçamento IPv6.

UsoExemplo
Cores na web#FF5733 (vermelho, verde e azul, 1 byte cada)
Captura de pacotesO Wireshark mostra o conteúdo dos pacotes em hexa
Valores de registradores e configuraçõesEx.: o registrador de configuração do roteador Cisco, 0x2102
Endereços de memóriaDepuração de programas

Mini laboratório: o hexa no seu computador

Section titled “Mini laboratório: o hexa no seu computador”

Objetivo: praticar conversões e encontrar valores hexa em redes reais.

HexaDecimalBinário
0F??
7E??
B4??
FF??
DecimalHexa
20?
77?
200?
254?
Ver respostas
HexaDecimalBinário
0F1500001111
7E7 × 16 + 14 = 12601111110
B411 × 16 + 4 = 18010110100
FF25511111111

20 = 14; 77 = 4D; 200 = C8; 254 = FE.

No Linux, Windows ou macOS (Python):

python3 -c "print(hex(200))"
python3 -c "print(int('C8', 16))"
python3 -c "print(format(0xC8, '08b'))"

No Linux (bash):

printf '%x\n' 200
printf '%d\n' 0xC8
  1. Descubra o endereço MAC do seu computador:
ip link show

(no Windows, ipconfig /all)

  1. Anote os 6 pares hexa do MAC.
  2. Converta cada par para decimal e para binário.
  3. Observe o primeiro byte: o último bit (o bit menos significativo) vale 0 ou 1? Endereços de dispositivos individuais têm esse bit em 0, e os de grupo (multicast e broadcast) têm em 1.
  4. Procure o seu endereço IPv6 e conte quantos grupos hexa ele tem:
ip -6 address show

Perguntas para fixar:

  • Por que um byte sempre é escrito com dois dígitos hexa?
  • Quantos bits cada dígito hexa representa?
  • Qual é o valor decimal do maior byte, FF?
Ver respostas
  • Porque um dígito hexa vale 4 bits, então 2 dígitos = 8 bits = 1 byte.
  • 4 bits.
  • 255.
  • O hexadecimal é de base 16, com os símbolos 0 a 9 e A a F.
  • Cada dígito hexa = 4 bits, e 2 dígitos = 1 byte.
  • Binário → hexa: agrupe em 4 bits e converta cada grupo.
  • Hexa → decimal: multiplique o primeiro dígito por 16 e some o segundo.
  • Decimal → hexa: divida por 16 (quociente e resto) ou passe pelo binário.
  • O hexa é usado nos endereços MAC (48 bits, 12 dígitos) e IPv6 (128 bits, 32 dígitos), e em cores web e captura de pacotes.