Introdução à programação e aos algoritmos
1.3 Octal e Hexadecimal
EXERCÍCIO 1.4
Converta os seguintes números decimais em binário usando o menor número de
bits possível.
a) 1001
b) 256
c) 4095
d) 545
EXERCÍCIO 1.5
Converta os seguintes números binários em decimal.
a) 1101001101
b) 10010010
c) 10000
d) 10001
EXERCÍCIO 1.6
Essa questão é mais losó ca que matemática. Nesta seção a rmei que binário
tem mais a ver com a existência ou não de uma grandeza física do que com a
comparação de opostos. Assim, ligado e não ligado é diferente de pensar em
ligado e desligado; aceso e não aceso é diferente de aceso e apagado. Na realidade,
se quisermos usar desligado, o par binário seria não desligado; no caso de
apagado, seria não apagado. Pense a respeito.
1.3 OCTAL E HEXADECIMAL
Números binários possuem apenas os dígitos 0 e 1. Quando representamos números maiores, fica fácil se perder com tantos símbolos em sequência. Por exemplo, podemos errar, falhando em um bit, ao escrever
10101011101000101010101010000111.
Um computador não teria problema em compreender e processar este número, mas humanos poderiam ficar confusos ao fazê-lo. Por uma questão de comodidade, preferimos escrever números binários de uma forma mais adaptada ao ser humano. Agrupamos em grupos de 3 ou 4 bits para podermos visualizar melhor o conjunto.
Assim, grupos de 3 bits formam o que chamamos de octal. O nome vem do fato de que 3 bits permitem numerar de 0 até 7. Estamos, portanto, usando a base 8. Usando um número em octal, o número binário desta seção seria representado por
253505252078.
Para chegar a este número, dividimos o número binário original em grupos de 3 bits, da direita para a esquerda, e completamos com zero o que faltar no último grupo, de modo a termos também 3 dígitos binários nesse grupo. Assim o número original seria apresentado como
010 101 011 101 000 101 010 101 010 000 111 . 2
Para não confundir com um número decimal, podemos usar diversas formas de representação. Não existe um padrão. Uma opção é usar um subscrito da base, como temos feito aqui. Outro sistema, usado na linguagem de programação C, é começar o número octal com um zero. Uma terceira solução é usar o subscrito oct. O importante é deixar claro para o leitor qual base numérica estamos utilizando.
02530525207 ou 2530525207 8 ou 2530525207oct.
A Tabela 1.1 mostra como cada sequência de 3 bits é convertida em um dígito octal. Obviamente, sempre podemos usar a base 8 e fazer os cálculos necessários para a conversão, mas é mais fácil converter de forma direta.
Tabela 1.1 Conversão para octal
Binário 000 001 010 011 100 101 110 111
Octal 0 1 2 3 4 5 6 7
Números em hexadecimal, ou hexa, como por vezes são
chamados para encurtar, usam a base 16 e, portanto, agrupam os bits em grupos de 4. Da mesma forma que o octal, temos uma maneira simples de converter uma sequência de dígitos binários em hexadecimal. O número 16 é igual a 2 elevado à quarta potência; assim, basta agruparmos os dígitos binários de 4 em 4 e convertermos em hexadecimal. Surge aqui uma complicação: temos apenas 10 símbolos para representar números da base decimal. No caso do octal a solução foi simples, bastou usar os 8 primeiros dígitos da base decimal. Para o caso da numeração hexadecimal, convencionou-se usar as primeiras letras do alfabeto para representar os 6 símbolos restantes, equivalentes de 10 a 15. A
Tabela 1.2 mostra essa equivalência entre binário, octal, hexadecimal e decimal. Os 8 primeiros números são iguais entre octais, hexadecimais e decimais.
Tabela 1.2 Binário, octal, hexadecimal e decimal
Binário Octal Hexadecimal Decimal
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 A 10
1011 13 B 11
1100 14 C 12
1101 15 D 13
1110 16 E 14
1111 17 F 15
Voltando ao nosso exemplo, o número seria dividido em grupos
de 4 dígitos
1010 1011 1010 0010 1010 1010 1000 0111 2,
dando como resultado o número em hexa
0xABA2AA87, ABA2AA87 16 ou ABA2AA87hexa.
Note que podemos usar um prefixo 0x para indicar que o número
está na representação hexadecimal. Também não importa se escrevemos um número com letras minúsculas, como em 0xaba2aa87. Não existe uma forma padrão de representar números em hexa. Escolha a forma que mais lhe agradar e mantenha-se fiel ao formato.
EXERCÍCIO 1.7
Converta os seguintes números binários em octais e hexadecimais.
a) 1101001101
b) 10010010
c) 10000
d) 110001111
e) 1010111011110011
EXERCÍCIO 1.8
Converta os seguintes números octais em binários.