[Cálculo Numérico] Aula 10: sistema hexadecimal
Autor: Henrique S. Ribeiro | Publicado: 2012-09-01T14:45:00-07:00


Sistema Hexadecimal
Composto de 16 valores (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). É um sinal digital com equivalentes em quatro dígitos binários conforme a tabela:




Decimal
Hexadecimal
Binário


0
0
0000


1
1
0001


2
2
0010


3
3
0011


4
4
0100


5
5
0101


6
6
0110


7
7
0111


8
8
1000


9
9
1001


10
A
1010


11
B
1011


12
C
1100


13
D
1101


14
E
1110


15
F
1111



Converter de hexadecimal para decimal
a) FACADA
Só fazer normalmente aquela decomposição de cada algarismo:
Lembrando que F = 15, A = 10, C = 12 e D = 13. Fica:
$$10 * 16^0 + 13 * 16^1 + 10 * 16^2 + 12 * 16^3 + 10 * 16^4 + 15 * 16^5 \\
10 + 208 + 2560 + 49152 + 655360 + 15728640 = 16435930_{10}$$
b) BABACA
Antes: B = 11, A = 10, C = 12.
$$10 * 16^0 + 12 * 16^1 + 10 * 16^2 + 11 * 16^3 + 10 * 16^4 + 11 * 16^5 \\
10 + 192 + 2560 + 45056 + 655360 + 11534336 = 12237514_{10}$$
c) CABECA
Antes: C = 12, A = 10, B = 11, E = 14.
$$10 * 16^0 + 12 * 16^1 + 14 * 16^2 + 11 * 16^3 + 10 * 16^4 + 12 * 16^5 \\
10 + 192 + 3584 + 45056 + 655360 + 12582912 = 13287114_{10}$$
d) 2F4D0
Antes: F = 15, D = 13.
$$0 * 16^0 + 13 * 16^1 + 4 * 16^2 + 15 * 16^3 + 2 * 16^4 \\
0 + 208 + 1024 + 61440 + 131072 = 193744_{10}$$

Converter de hexadecimal para binário
Como ambos são sinais digitais, basta substituir pelos binários tabelados:
2FB10
0010.1111.1011.0001.1100
Logo,&nbsp;101111101100011100 na base 2.

Converter de decimal para hexadecimal
Mesma coisa do resto: divisão por 16 e pegar o resto. Ou fazer aquele esquema de pegar o primeiro algarismo numa multiplicação. Veja bem:
a) 1023
1023/16 = 63, resto 15 (F).
63/16 = 3, resto 15 (F).
3/16 = 0, resto 3.
Logo,&nbsp;3FF na base 16.

b) 462,24
Parte inteira:
462/16 = 28, resto 14 (E).
28/16 = 1, resto 12 (C).
1/16 = 0, resto&nbsp;1.
Logo,&nbsp;1CE na base 16.
Parte fracionária:
0,24 x 16 =&nbsp;3,84
0,84 x 16 =&nbsp;13,44 (D)
0,44 x 16 =&nbsp;7,04
0,04 x 16 =&nbsp;0,64
E aqui tá bom, né.&nbsp;3D7.
Assim, podemos considerar 462,24 como&nbsp;1CE,3D7 na base 16.

c) 16
16/16 =&nbsp;1, resto&nbsp;0.
Logo,&nbsp;10&nbsp;na base 16.


Exercícios
1. Converta da base 8 para a base 2 ou vice-versa.
a) 101011 na base 8.
NOTE BEM, aqui é a base 8. Não é um binário (não dá pra fazer a base 8 ali bonitinho sem LaTeX e LaTeX que não quebra linha não funciona em todos os navegadores, então só posso pedir para que preste bastante atenção).
Vai ficar assim:
(001)(000)(001)(000)(001)(001)
Ou seja:&nbsp;1000001000001001 na base 2.

b) 1100 na base 2.
Decompondo: 001.100, que fica 1.4. Logo,&nbsp;14 na base 8.

c) 11,01 na base 8.
(001)(001),(000)(001)
Logo:&nbsp;1001,000001.

2. Converta da base 16 para a base 8 ou vice-versa.
Pra isso os srs. terão de converter primeiro pra binário, depois de volta pra base 8 ou pra base 16. Veja só:
a) 10 na base 8.
(001)(000), logo em binário 1000.
1000 na base 16 fica&nbsp;8.
b) AB na base 16.
(1010)(1011), logo em binário 10101011.
10101011 na base 8 você decompõe da seguinte maneira:
10.101.011, que fica 2.5.3. Que fica&nbsp;253 na base 8.

3. Converta os números seguintes para as demais bases:
Aqui o esquema é o seguinte: todos os números deverão ser convertidos para todas as bases. Veja só, decimal, binário, octal e hexadecimal: um deles será dado, os outros deverão ser descobertos através dele. Meu conselho é o seguinte:
Descubra sempre o hexadecimal primeiro. O hexadecimal simplifica todos os processos porque ele é o maior, e que vai precisar de menos contas pra resolver. De hexadecimal pra decimal você provavelmente só fará três divisões enquanto octal fará um pouco mais e binário será ridículo, de hexadecimal pra binário é uma tabela maior que octal mas também significa menos decomposição de números, e de hexadecimal pra octal... bem, pra que você vai fazer hexadecimal pra octal primeiro mesmo? "Ah, mas se me derem um octal, eu vou ter que descobrir binário primeiro." então descubra, ué, mas depois faça hexadecimal pra sofrer menos no decimal.
Veja só:

a) 124,5 na base 8.
Pra binário (não dá pra hexadecimal direto):
(001)(010)(100),(101), logo 1010100,101 na base 2.
Pra hexadecimal:
101.0100,1010, não esqueça desse último zero, logo 5.4,A. O que dá 54,A na base 16.
Pra decimal:
$$5 * 16^1 + 4 * 16^0 + \dfrac{10}{16} = 80 + 4 + 0.625 = 84.625_{10}$$
E está respondido o primeiro.

b) 322,21 na base 16.
Pra binário:
(0011)(0010)(0010),(0010)(0001), logo&nbsp;1100100010,00100001 na base 2.
Pra octal:
1.100.100.010,001.000.010. O que dá 1.4.4.2,1.0.2. Logo,&nbsp;1442,102 na base 8.
Pra decimal:
$$3 * 16^2 + 2 * 16^1 + 2 * 16^0 + \dfrac{2}{16} + \dfrac{1}{16^2} \\
768 + 32 + 2 + 0.125 + 0.00390625 = 802.12890625_{10}$$
E está respondido o segundo.

c) 100111101 na base 2.
Pra hexadecimal:
1.0011.1101. O que dá 1.3.D. Ou seja,&nbsp;13D na base 16.
Pra octal:
100.111.101. O que dá 4.7.5. Logo,&nbsp;475 na base 8.
Pra decimal:
Aqui vamos usar octal porque é mais conveniente que ficar usando letra (tanto octal quanto hexadecimal usam 3 algarismos mesmo). Mas é caso e caso, faça a análise que lhe convier.
5*1 + 7*8 + 4*8² = 5 + 56 + 256 =&nbsp;317 na base 10.
Resolvido.

d) 7002 na base 10.
Pra hexadecimal:
7002/16 = 437, resto&nbsp;10&nbsp;(A).
437/16 = 27, resto 5.
27/16 = 1, resto&nbsp;11&nbsp;(B).
1/16 = 0, resto&nbsp;1.
Ou seja,&nbsp;1B5A na base 16.
Pra binário:
(0001)(1011)(0101)(1010), ou seja,&nbsp;1101101011010 na base 2.
Pra octal:
1.101.101.011.010, ou seja, 1.5.5.3.2, logo&nbsp;15532 na base 8.
E estão resolvidos todos.

Boa noite. \o\