Módulo III - Sistemas Númericos e Códigos pag.3/4

O hexadecimal é um outro sistema numérico que é normalmente usado com microprocessadores. Ele permite fácil conversão ao sistema numérico binário. Devido a isso, e também devido ao fato que a notação hexadecimal simplifica a manipulação de dados. Tal qual o nome diz, hexadecimal tem base 1610. Ele usa os dígitos 0 até 9 e as letras A até F.

As letras são usadas pois é necessário representar 1610 valores diferentes com um simples dígito para cada valor. Portanto, as letras de A até F são usadas para representar os valores numéricos de 1010 até 1510.

Os números iniciais entre os sistemas decimal e hexadecimal são de valores iguais, 010 = 016 ; 310 = 316 ; 910 = 916.

Para números maiores que 9, as relações seguintes existem:
1010 = A16 ; 1110 = B16 ; 1210 = C16 ; 1310 = D16 ; 1410 = E16 e 1510 = F16.

Usar letras em contagem pode parecer grosseiro até a familiarização com o sistema. A tabela DEC e HEXA ilustra o relacionamento entre inteiros decimal e hexadecimal, enquanto tabela FRAÇÕES ilustra o relacionamento entre frações decimal e hexadecimal.

Como nos sistemas numéricos anteriores, cada posição dos dígitos de um número hexadecimal tem um peso posicional o qual determina a magnitude do número. O peso de cada posição é determinado por alguma potência do número base do sistema (neste caso, 16). O valor total do número pode ser calculado considerando os dígitos específicos e os pesos de suas posições. (a tabela mostra uma lista resumida das potências de 16). Por exemplo, o número hexadecimal E5D7,A3 pode ser escrito com notação posicional como se segue:

(E x 163) + (5 x 162) + (D x 161) + (7 x 160) + (A x 16-1) + (3 x 16-2)

O valor decimal do número E5D7,A3 é determinado pela multiplicação de cada dígito pelo seu valor posicional e pela soma dos resultados.

Potências de 16
16-4 =1/6553610= 0,000015258789062510 160 =110
16-3 = 1/409610 =0,00024414062510 161 =1610
16-2 = 1/25610 =0,0039062510 162 =25610
16-1 = 1/1610 =0,062510 163 =4.09610
Como nos sistemas numéricos anteriores, o ponto base ( ponto hexadecimal ) separa a parte inteira da parte fracionária do número 164 =65.53610
165 =1.048.57610
166 =16.777.21610

parte inteira parte fracionária
(E x 163)+(5 x 162)+(D x 161)+(7 x 160) + (A x 16-1) + (3 x 16-2)
(14 x 4096)+(5 x 256)+(13 x 16)+(7 x 1) + (10 x 1/16) + (3 x 1/256) =
57344 + 1280 + 208 + 7 + 0,625 + 0,01171875
Resultado = 58839, 6367187510

Conversão de decimal para hexadecimal é realizada da mesma maneira que a conversão de decimal para binário, mas com uma base numérica de 1610. Como exemplo, o número decimal 156 é convertido no seu equivalente hexadecimal.

Divisão Resto  
156/16 = 9 12 = C LSD
9/16 = 0 9 = 9 MSD
15610 =9CH
Divide-se o número decimal por 1610 e anota-se o resto. Se o resto exceder 9, converte-se o número de dois dígitos no seu equivalente hexadecimal. (1210 = CH neste exemplo). Então divida o quociente por 16 e novamente observe o resto. Continue dividindo até que um quociente de 0 resulte. Então colete os restos começando pelo último ou dígito mais significativo (MSD) e continuando até o primeiro ou dígito menos significativo (LSD). O número 9CH = 15610.

Observe que a letra H depois de um número é algumas vezes usada para indicar hexadecimal. No entanto, usaremos o subscrito 16.

Vamos a mais um exemplo, o número decimal 4763210 é convertido no seu equivalente hexadecimal.O processo de divisão continua até que resulte um 0 quociente. Os restos são coletados, produzindo o número BA1016 = 4763210. Qualquer resto que exceda o dígito 9 deve ser convertido no seu equivalente em letras (neste exemplo, 10 = A e 11 = B).
Divisão Resto  
47632 / 16 = 2977 0 = 0 LSD
2977 / 16 = 186 1 = 1  
186 / 16 = 11 10 = A  
11 / 16 = 0 11 = B MSD
4763210 = BA1016

Para converter uma fração decimal para uma fração hexadecimal, multiplique a fração sucessivamente por 1610 (base hexadecimal). Como um exemplo à fração decimal 0,78125 é convertido no seu equivalente hexadecimal.

Multiplique o número decimal por 1610. Se o produto exceder um, subtraia o inteiro do produto. Se a parte inteira exceder 9, converta o número de 2 dígitos para o seu equivalente hexadecimal. Então multiplique a fração resultante por 1610 e novamente observe a parte inteira.

Multiplicação Parte inteira
0,78125x16 =12,5=0,5 12 = C MSD
0,50000x16 = 8,0= 0 8 = 8 LSD
0,7812510 = 0.8CH
Continue multiplicando até resultar em um número inteiro sem fração, ou você deve apenas continuar a conversão até a precisão que você desejar. Colete os inteiros começando no ponto base com o MSD e continuando até o LSD. O número 0·C816 = 0,7812510.

A fração 0,13610 será convertida no seu equivalente hexadecimal com cinco algarismos significativos.

O número 0.22D0E16 é aproximadamente igual a 0,13610. Se converter 0·22D0E16 para decimal (usando notação posicional), será encontrado: 0.22D0E16 = 0,135999679565429687510. Este exemplo mostra que estender a precisão da conversão é de pequena importância, a menos que extrema exatidão seja requerida.
Multiplicação Parte inteira
0,136x16 = 2,176 =0,176 2 = 2 MSD
0,176x16 = 2,816 =0,816 2 = 2  
0,816x16 = 13,056 =0,056 13 = D  
0,056x16 = 0,896 =0,896 0 = 0  
0,896x16 = 14,336 =0,336 14 = E LSD
0,13610 = 0.22D0EH

A conversão de um inteiro decimal para hexadecimal requer uma técnica diferente do que a conversão de uma fração.

Portanto quando se converter um número decimal composto de uma parte inteira e de uma parte fracionária, deve-se separar a parte inteira e a fracionária, e então realizar a operação apropriada em cada parte. Após as conversões, deve-se recombinar a parte inteira e a parte fracionária.

Por exemplo, o número decimal 124,78125 é convertido no seu equivalente hexadecimal. 124,7812510 = 12410 + 0,7812510.

Divisão Resto
124 ÷ 16 = 7 12 = C LSD
7 ÷ 16 = 0 7 = 7 MSD
12410 = 7C16
Multiplicação Inteiro
0,78125 X 16 = 12,5 = 0,5 12 = C MSD
0,50000 X 16 = 8,0 = 0 8 = 8 LSD
0,7812510 =0,C8H
124,7812510 = 12410 + 0,7812510 = 7C16+0,C816 = 7C,C8 16

Conversão entre o Sistema Numérico Binário e o Hexadecimal

Este método é muito útil em muitos microprocessadores. O treinador usado neste curso usa o sistema numérico hexadecimal para representar quantidades binárias. Como resultado, conversões freqüentes de binário para hexadecimal são necessárias. As tabelas DEC e HEXA e, FRAÇÕES ilustram o relacionamento existente entre inteiros e frações binária e hexadecimal.

Como se sabe, quatro bits de um número binário permitem exatamente 1610 combinações. Entretanto, pode-se representar um número binário de 4 bits com um número hexadecimal de 1 dígito.

11012 = (1x23)+(1x22)+(0x21)+(1x20)
= 8+4+0+1
= 1310
= D16

101101102 Reescrito como
MSB -> 1011 0110 <- LSB
Resulta 616

Devido a esta relação, a conversão de binário para hexadecimal é simples e rápida. Por exemplo o número binário 1 0 1 1 0 1 1 0 é convertido no seu equivalente hexadecimal.

Para converter um número binário para hexadecimal, primeiro separa-se o número em grupos contendo quatro bits, começando com o bit menos significativo, então converte-se cada grupo de 4 bits no seu equivalente hexadecimal. Não se deve esquecer de usar dígitos com letras quando preciso. Isto resulta em um número hexadecimal igual em valor ao número binário.

Convertendo agora um grande número binário (10101101101) no seu equivalente hexadecimal.

Novamente o número binário é separado em grupos de 4 bits começando com o LSB. Entretanto, o terceiro grupo contém apenas três bits. Desde que cada grupo deve conter quatro bits, um zero deve ser acrescentado após o MSB. O terceiro grupo terá então 4 bits sem alteração no valor do número binário. Agora cada grupo de 4 bits pode ser convertido em seu equivalente hexadecimal. Quando se acrescentar zeros a um inteiro binário sempre coloque-os a esquerda do bit mais significativo.

10101101101

Reescrito como

MSB -> 0101 0110 1101 <- LSB

Resulta 56D16

Frações binárias também podem ser convertidas nos seus equivalentes hexadecimais usando o mesmo processo, com uma exceção; os bits binários são separados em grupos de quatro, começando com o bit mais significativo (no ponto base).

Por exemplo, a fração binária 0.01011011 é convertida no seu equivalente hexadecimal.

Novamente, deve-se separar o número binário em grupos de quatro, começando pelo ponto Base. Então converta cada grupo de 4 bits no seu equivalente hexadecimal, isto resulta um número hexadecimal igual em valor ao número binário.

0.010110112
Reescrito como
MSB -> 0 . 0101 1011 <- LSB
Resulta 0 . 5 B16

Agora, converte-se uma fração binária grande ( 0.1101001101) no seu equivalente hexadecimal.

Separa-se o número binário em grupos de 4 bits, começando-se no ponto binário (MSB). Observe que cada grupo deve conter quatro bits, dois zeros devem ser usados após o (LSB). O terceiro grupo terá então quatro bits sem qualquer alteração no valor do número binário.

0.11010011012
reescrito como: 0 .1101 0011 0100
resulta 0 . D 3 416

Agora cada grupo de quatro bits pode ser convertido no seu equivalente hexadecimal. Quando se soma “zeros” a uma fração binária, eles sempre são colocados a direita do bit menos significativo.

Agora, um número binário contendo uma parte fracionária e uma parte inteira (110110101.01110111) será convertido no seu equivalente hexadecimal.

A parte inteira do número é separada em grupos de quatro, começando no ponto base.Observe que três zeros foram acrescentados ao terceiro grupo para completá-lo.

A parte fracionária do número é separada em grupos de quatro, começando pelo ponto base. (Nenhum zero foi necessário para completar os grupos fracionários). Os grupos de 4 bits fracionários e inteiros são então convertidos para hexadecimal. O número 110110101.011101112 = 1B5.7716. Nunca desloque o ponto base de maneira a formar grupos de 4 bits.

110110101·011101112 Reescrito como

MSB -> 0001 1011 0101.0111 0111 <- LSB

resulta 1 B 5 . 7 716

A conversão de hexadecimal para binário é exatamente o oposto do processo anterior; simplesmente converte-se cada número hexadecimal em seu equivalente binário de 4 bits.

Por exemplo, converter o número hexadecimal 8F.41 no seu equivalente binário. Converte-se cada dígito hexadecimal em um número binário de 4 bits. Então condensa-se os grupos de 4 bits para formar o valor binário igual ao valor hexadecimal.

O número 8F.4116 = 10001111.010000012

8 F . 4 116

resulta MSB-> 1000 1111 . 0100 0001 <- LSB

reescrito como 10001111 . 010000012

Agora um outro exemplo, o número hexadecimal 175.4E16 será convertido no seu equivalente binário.

1 7 5 . 4 E16 resulta

MSB-> 0001 0111 0101.0100 1110 <- LSB

reescrito como 101110101.01001112

Novamente, cada dígito hexadecimal é convertido no seu equivalente binário de 4 bits. Entretanto, neste exemplo existem três zeros insignificantes na frente do MSB e um após o LSB.

Desde que estes zeros não tem valor, eles pode ser removidos do resultado final.

ICEA/EAD © 2005
Códigos