Ir ao conteúdo

Sistema de Numeração Hexadecimal

Atualizado pela última vez em 4 de dezembro de 2023

O Sistema de Numeração Hexadecimal é um dos mais importantes para o mundo da programação. Ou melhor, para o mundo da computação em geral. Ocorre que no nosso ensino formal da escola, só aprendemos o Sistema de Numeração Decimal e isso é bastante aceitável, tendo em vista que no uso da matemática, prioritariamente vamos utilizar este sistema. Quando entramos na faculdade de computação, aparecem outros sistemas e isso acaba gerando uma certa confusão no seu entendimento.

Já tinha feito um artigo anterior intitulado Sistema de numeração: Binário, Octal, Decimal e Hexadecimal, onde abordei outra forma de efetuar os cálculos de conversões e outros detalhes. Vale apena da uma lida também!

O que é um Sistema Hexadecimal?

O Sistema Hexadecimal é um sistema numérico que utiliza uma combinação de números e letras, de modo a gerar um agrupamento que vai corresponder a algum valor. Como ele tem relação direta com a computação, é um sistema muito utilizado para representar números binários de uma forma mais “compacta”. Ou seja, ao invés de pensarmos em um monte de zeros e uns, conseguimos representar valores utilizando a combinação do conjunto de 16 símbolos,  S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}.

Como funcionam as bases numéricas?

Para podermos especificar um padrão de conversão numérica, utilizamos bases representativas. As bases numéricas são representações que utilizaram de uma certa quantidade de elementos para representar um determinado número. Ou seja, você tem um conjunto de números que podem ser utilizados de forma combinada, de modo que pode representar valores.

Podemos citas os principais sistemas numéricos do mundo do computação:

  • Decimal: Este é o sistema que conhecemos melhor! Ele utiliza os símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 e a sua combinação gera infinitos números.  Representamos este sistema como base 10. (Logo mais vou dar alguns exemplos para você fixar o entendimento sobre bases).
  • Binário: Sistema que utiliza a combinação dos símbolos 0 e 1 (zero e um). Representamos como base 2 e é a “linguagem” que os computadores entendem.
  • Octal:  Utiliza 8 símbolos combinados: 0, 1, 2, 3, 4, 5, 6, 7. Representamos como base 8.
  • Hexadecimal: Como já mencionado aqui, utilizamos os 16 símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F(base 16)

A combinação destes conjuntos de símbolos para representar alguns valores, utiliza-se da representação posicional. Utilizando a notação posicional, por exemplo, o número decimal 638, , temos a seguinte interpretação de uso da base 10

638 = (6 x 102) + (3 x 101) + (8 x 100)

Resolução: 600 + 30 + 8 = 638.

Se faz muito tempo que você não utiliza a potenciação, a regra é simples. Você multiplica o número base, por ele mesmo, quantas vezes constar no expoente(número no topo). Exemplo, 22 = 2 x 2 = 4, já o número 23 = 2 x 2 x 2 = 8 e assim por diante, 34 = 3 x 3 x 3 x 3 = 81.  Fique atento que um número elevado a 1 o resultado é ele mesmo, 41 = 4. Tenha mais atenção quando for elevado a zero. Todo número elevado a zero (0) é igual a 1. Nesse caso 100 = 1 ou qualquer outro número, exemplo 50 = 1.

Pegando o número Octal 112, que tem base 8, para converter para Decimal, você utiliza a mesma lógica de representação:

112 = (1 x 82) + (1 x 81) + (2 x 80) = 74 em decimal 

Resolução: 64 + 8 + 2 = 74.

Relação entre o Sistema Hexadecimal e o Decimal

Para representar a notação posicional dos Hexadecimais, temos que fazer um paralelo com o Decimal para vermos a equivalência das letras de A a F como números. Veja a tabela a seguir:

DecimalHexadecimal
00
11
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F

Da mesma forma que representamos o Decimal e o Octal em relação às suas bases, podemos fazer o mesmo para o Hexadecimal na base 16. Por exemplo, para o valor Hexadecimal 4D2 , podemos obter o seu Decimal ao efetuar a seguinte operação:

4D2 = (4 x 162)+ (13 x 161)+ (2 x 160) = 1234 em Decimal

Resolução: 1024 + 208 + 2 = 1234 (Substituímos o D pelo valor 13 correspondente na tabela)

E a base 2 do Sistema Binário, como ficaria? Da mesma forma que nas outras bases! Veja como se representa o número binário 1101101 para converter em Decimal:

1101101= 1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20

Resumindo, 1101101 em binário, corresponde a 109 em decimal.

Por que utilizar o Sistema Hexadecimal?

Como você já sabe, os computadores operam sobre a base 2 utilizando os códigos binários (0 e 1). Só representar os conjuntos de zeros e uns, ficou bastante complexo para os humanos. Com o uso do sistema Octal, conseguimos uma abreviação de binário porque o tamanho da palavra é divisível por três (cada dígito Octal representa três dígitos binários). Ou seja, o sistema Octal foi utilizado com o propósito de minimizar a representação de um número binário e facilitar a manipulação humana.

O intuito de uso do Sistema Hexadecimal é o mesmo do Octal, só que para minimizar mais ainda a representação binária. Cada elemento do sistema binário, corresponde a 1 bit, quando agrupamos 8 bits, temos 1 byte.  E o maior binário que se pode expressar com 1 byte é 1111, que em decimal corresponde a 15. Como não existem símbolos dentro do sistema arábico, que possam representar os números decimais entre 10 e 15, sem repetir os símbolos anteriores, foram utilizados os símbolos literais A, B, C, D, E e F.  Com esse recurso de letras, conseguimos representar conjuntos de bytes tranquilamente. Por exemplo, o número decimal 79,  cuja representação binária é 01001111,  pode ser reescrito como 4F em Hexadecimal (4 = 0100, F = 1111). Em outras palavras, cada dígito Hexadecimal consegue representar 4 bits o mesmo que 1 byte como já mencionado.

Tabela com Sistemas Numéricos Decimal, Hexadecimal e Binário
Tabela com Sistemas Numéricos Decimal, Hexadecimal e Binário

Veja esta tabela, observe que para cada Hexadecimal, tem o seu Binário correspondente.

Pegando o binário 1101101, divida ele em blocos de 4 bits, se um bloco ficar com menos de 4 dígitos, você completa com zeros a esquerda. Sua correspondência em Hexadecimal será 0110 = 6 1101= D, logo seu Hexadecimal é 6D. Agora com estes dois dígitos, você consegue facilmente converter 6D para Decimal utilizando o conceito de base 16, onde teríamos (6 x 161) + (D x 160) o mesmo que (6 x 161) + (13 x 160) = 109.  Veja que quando convertemos o binário 1101101 para decimal, observe que foi bem mais simples a operação utilizando a base 16.

Normalmente o número Hexadecimal é representado com os prefixos “0x” (0x2400) ou “# (#228B22) ou, em alguns Assemblers, com o sufixo “h” (0FFFFh).

Vou mostrar um exemplo bônus para te motivar a entender estes conceitos. Imagine que você vai aprender HTML e CSS. A maioria das cores são representadas utilizando o Sistema Hexadecimal, por exemplo, #0000FF corresponde a cor azul. Dividindo este número em 3 pares, cada par corresponde a um número que representas as 3 cores primárias rgb( r = red, g = green, b = blue). Deste modo, também podemos representar uma cor desta forma rgb(0, 0, 255) no CSS. Veja que no Hexadecimal #0000FF, ao dividirmos, temos 00, 00 e FF. Neste caso, só precisamos encontrar os valores para FF, os zeros permanecem zeros. Olhando na tabela, temos que F=15, então fazendo a substituição e utilizando a base 16, temos: (15 x 161) + (15 x 160) = 240 + 15 = 255.

Caso ainda tenha alguma dificuldade e precise gerar os cálculos mais rapidamente, utilize nossa calculadora: https://growthcode.com.br/calculadora-de-conversao-de-bases-numerica

É isso aí! Agora me conta o que você achou? Ficou com alguma dúvida? Deixa o seu comentário para que outros que possam ter a mesma dúvida, possam se beneficiar com as respostas que surgirem. Tenha em mente que se você construir uma base teórica muito boa, você vai ter mais facilidades para entender como as coisas funcionam no mundo da programação. Espero que tenha gostado! Até o próximo artigo!

Confiança Sempre!!!

Fontes:

Olá! Sou Walmir, engenheiro de software com MBA em Engenharia de Software e o cérebro por trás do GrowthCode e autor do livro "Além do Código". Se você acha que programação é apenas sobre escrever código, prepare-se para expandir seus horizontes. Aqui, nós vamos além do código e exploramos as interseções fascinantes entre tecnologia, negócios, artes e filosofia. Você está em busca de crescimento na carreira? Quer se destacar em um mercado competitivo? Almeja uma vida mais rica em conhecimento e realização? Então você chegou ao lugar certo. No GrowthCode, oferecemos insights profundos, estratégias comprovadas e um toque de sabedoria filosófica para catalisar seu crescimento pessoal e profissional.

Publicado emProgramação

4 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *