OBS: Este material foi 100% copiado de http://chuibrz.homestead.com/EDigital.html
SISTEMAS DE NUMERAÇÃO
Desde quando se começou a registrar informações sobre quantidades, foram criados diversos métodos de representar as quantidades.
O método ao qual estamos acostumados usa um sistema de numeração posicional. Isso significa que a posição ocupada por cada algarismo em um número altera seu valor de uma potência de 10 (na base 10) para cada casa à esquerda.
Por exemplo, no sistema decimal (base 10), no número 125 o algarismo 1 representa 100 (uma centena ou 102) , o 2 representa 20 (duas dezenas ou 2x101) e o 5 representa 5 mesmo (5 unidades ou 5x100). Assim, em nossa notação,
125 = 1x102 + 2x101 + 5x100
Base de um Sistema de Numeração
A base de um sistema é a quantidade de algarismos disponível na representação. A base 10 é hoje a mais usualmente empregada, embora não seja a única utilizada.
Os computadores utilizam a base 2 (sistema binário) e os programadores, por facilidade, usam em geral uma base que seja uma potência de 2, tal como 24 (base 16 ou sistema hexadecimal) ou eventualmente ainda 23 (base 8 ou sistema octal).
Na base 10, dispomos de 10 algarismos para a representação do número: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Na base 2, seriam apenas 2 algarismos: 0 e 1. Na base 16, seriam 16: os 10 algarismos aos quais estamos acostumados, mais os símbolos A, B, C, D, E e F, representando respectivamente 10, 11, 12, 13, 14 e 15 unidades. Generalizando, temos que uma base b qualquer é constituída de b algarismos, variando entre 0 e (b-1).
Generalizando, representamos uma quantidade N qualquer, numa dada base b, com um número tal como segue:
Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n sendo que
an.bn + .... + a2.b2 + a1.b1 + a0.b0 é a parte inteira e
a-1.b-1 + a-2.b-2 + .... + a-n.b-n é a parte fracionária.
Intuitivamente, sabemos que o maior número que podemos representar, com n algarismos, na base b, será o número composto n vezes pelo maior algarismo disponível naquela base (ou seja, b-1). Por exemplo, o maior número que pode ser representado na base 10 usando 3 algarismos será 999 (ou seja, 103 - 1 = 999).
Generalizando, podemos ver que o maior número inteiro N que pode ser representado, em uma dada base b, com n algarismos (n "casas"), será N = bn - 1. Assim, o maior número de 2 algarismos na base 16 será FF16 que, na base 10, equivale a 25510 = 162 - 1.
Representação Binária
Os computadores modernos utilizam apenas o sistema binário, isto é, todas as
informações armazenadas ou processadas no computador usam apenas duas grandezas,
representadas pelos algarismos 0 e 1. Essa decisão de projeto deve-se à maior
facilidade de representação interna no computador, que é obtida através de dois
diferentes níveis de tensão. Havendo apenas dois algarismos, portanto dígitos
binários, o elemento mínimo de informação nos computadores é chamado de bit (
binary digit).
Na base 2, o número "10" vale dois. Mas se 102 = 210, então dez é igual a dois?
NÃO, dez não é e nunca será igual a dois!
Na realidade, "10" não significa necessariamente "dez". Nós
estamos acostumados a associar "10" a "dez" porque estamos acostumados a usar o
sistema de numeração decimal. O número
102 seria lido "um-zero" na
base 2 e vale 210 (convertido
para "dois" na base dez),
105 seria lido "um-zero" na
base 5 e vale 510 (convertido
para "cinco" na base dez),
1010 pode ser lido como
"um-zero" na base 10 ou então como "dez" na base dez,
1016 seria lido "um-zero" na
base 16 e vale 1610 (convertido
para "dezesseis" na base dez), etc.
Portanto, 10 só será igual a dez se - e somente se - o número estiver representado na base dez!
OBS.: Toda vez que um número for apresentado sem que seja indicado em qual sistema de numeração ele está representado, a base numérica utilizada é decimal. Sempre que outra base for utilizada, a base será obrigatoriamente indicada.
|
Repr.Binária |
Potência |
Repr.Decimal |
|
1 |
20 |
1 |
|
10 |
21 |
2 |
|
100 |
22 |
4 |
|
1000 |
23 |
8 |
|
10000 |
24 |
16 |
|
100000 |
25 |
32 |
|
1000000 |
26 |
64 |
|
10000000 |
27 |
128 |
|
100000000 |
28 |
256 |
|
1000000000 |
29 |
512 |
|
10000000000 |
210 |
1.024 |
A representação binária é perfeitamente adequada para utilização pelos computadores
No entanto, um número representado em binário pode apresentar muitos bits, ficando longo e passível de erros quando manipulado por seres humanos normais como por exemplo os programadores, analistas e engenheiros de sistemas.
Para facilitar a visualização e manipulação dos dados e instruções processados em computadores, é usualmente adotada a representação hexadecimal (base 16). Ressaltamos mais uma vez que o computador opera apenas na base 2 e a representação hexadecimal não é usada no computador, ela se destina apenas à manipulação de grandezas pelos programadores.
Representação em Octal e em Hexadecimal
Para reduzir o número de algarismos da representação e conseqüentemente facilitar a compreensão da grandeza e evitar erros temos o sistema octal (base 8),onde cada três bits são representados por apenas um algarismo octal (de 0 a 7), e o sistema hexadecimal (base 16),onde cada quatro bits são representados por apenas um algarismo hexadecimal (de 0 a F ).
A seguir, apresentamos uma tabela com os números em decimal e sua representação correspondente em binário, octal e hexadecimal:
|
Base 10 |
Base 2 |
Base 8 |
Base 16 |
|
0 |
0 |
0 |
0 |
|
1 |
1 |
1 |
1 |
|
2 |
10 |
2 |
2 |
|
3 |
11 |
3 |
3 |
|
4 |
100 |
4 |
4 |
|
5 |
101 |
5 |
5 |
|
6 |
110 |
6 |
6 |
|
7 |
111 |
7 |
7 |
|
8 |
1000 |
10 |
8 |
|
9 |
1001 |
11 |
9 |
|
10 |
1010 |
12 |
A |
|
11 |
1011 |
13 |
B |
|
12 |
1100 |
14 |
C |
|
13 |
1101 |
15 |
D |
|
14 |
1110 |
16 |
E |
|
15 |
1111 |
17 |
F |
Nota: a base 16 ou sistema hexadecimal pode ser indicada também por um "H" ou "h" após o número; por exemplo: FFH significa que o número FF está em hexadecimal. Não confundir o "H" ou "h" com mais um dígito, mesmo porque em hexadecimal só temos algarismos até "F".
Conversões entre Bases
Vamos analisar agora as regras gerais para converter números entre duas
bases quaisquer.
Conversões
entre as bases 2, 8 e 16
As conversões mais simples são as que envolvem bases que são potências entre
si. Vamos exemplificar com a conversão entre a base 2 e a base 8. Como 23
= 8, separando os bits de um número binário em grupos de tres bits (começando
sempre da direita para a esquerda!) e convertendo cada grupo de tres bits para
seu equivalente em octal, teremos a representação do número em octal. Por
exemplo:
101010012
= 10 / 101 / 0012 (separando em
grupos de 3, sempre começando da direita para a esquerda)
Sabemos que 0102 = 28
; 1012 = 58
; 0012 = 18
portanto 101010012 = 2518
Se você ainda não sabe de cor, faça a conversão utilizando a regra geral. Vamos agora exemplificar com uma conversão entre as bases 2 e 16. Como 24 = 16, basta separarmos em grupos de 4 bits (começando sempre da direita para a esquerda!) e converter. Por exemplo:
11001010111111102
= 1100 / 1010 / 1111 / 11102
(separando em grupos de 4 bits, sempre começando da direita para a esquerda)
Sabemos que 11002 = C16;
10102 = A16
; 11112 = F16
; 11102 = E16
portanto 11001010111111102 = CAFE16
Vamos agora exercitar a conversão inversa. Quanto seria 3F5H (lembrar que o H está designando "hexadecimal") em octal? O método mais prático seria converter para binário e em seguida para octal.
3F5H = 11 / 1111 / 01012
(convertendo cada dígito hexadecimal em 4 dígitos binários) =
= 1 / 111 / 110 / 1012
(agrupando de tres em tres bits) =
= 17658 (convertendo cada grupo
de tres bits para seu valor equivalente em octal).
Conversão de Números em uma base b qualquer para a base 10
Vamos lembrar a expressão geral já apresentada:
Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n
A melhor forma de fazer a conversão é usando essa expressão. Tomando como exemplo o número 1011012, vamos calcular seu valor representado na base dez. Usando a expressão acima, fazemos:
1011012 = 1x25 + 0x24 + 1x23 + 1x22 + 0x21 + 1x20 = 32 + 0 + 8 + 4 + 0 + 1 = 4510
Podemos fazer a conversão de números em qualquer base para a base 10 usando o algoritmo acima.
Exemplos:
a) Converter 4F5H para a base 10 .
Solução: Lembramos que o H significa que a representação é hexadecimal (base
16). Sabemos ainda que F16=1510.
Então:
4x162 + 15x161
+ 5x160 = 4x256 +
15x16 + 5 = 1024 + 240 + 5 = 126910
b) Converter 34859
para a base 10.
Solução: 3x93 + 4x92
+ 8x91 + 5x90
= 3x729 + 4x81 + 8x9 + 5 = 2187 + 324 + 72 + 5 = 258810.
c) Converter 1001,012
para a base 10.
Solução: 1x23 + 0x22
+ 0x21 + 1x20
+ 0x2-1 + 1x2-2
= 8 + 0 + 0 + 1 + 0 + 0,25 = 9,2510
d) Converter 34,35
para a base 10.
Solução: 3x51 + 4x50
+ 3x5-1 = 15 + 4 +
0,6 = 19,610
e) Converter 38,38
para a base 10.
Solução: Uma base b dispõe dos algarismos entre 0 e (b-1). Assim, a base 8
dispõe dos algarismos 0 a 7 e portanto o algarismo 8 não existe nessa base. A
representação 38,3 não existe na base 8.
Conversão de Números da Base 10 para uma Base b qualquer
A conversão de números da base dez para uma base qualquer emprega algoritmos
que serão o inverso dos acima apresentados. Os algoritmos serão melhor
entendidos pelo exemplo que por uma descrição formal. Vamos a seguir apresentar
os algoritmos para a parte inteira e para a parte fracionária:
Parte Inteira:
O número decimal será dividido sucessivas vezes pela base; o resto de cada
divisão ocupará sucessivamente as posições de ordem 0, 1, 2 e assim por diante
até que o resto da última divisão (que resulta em quociente zero) ocupe a
posição de mais alta ordem. Veja o exemplo da conversão do número 1910
para a base 2:


Experimente fazer a conversão contrária (retornar para a base 10) e ver se o resultado está correto.
Parte Fracionária
Se o número for fracionário, a conversão se fará em duas etapas distintas:
primeiro a parte inteira e depois a parte fracionária. Os algoritmos de
conversão são diferentes. O algoritmo para a parte fracionária consiste de uma
série de multiplicações sucessivas do número fracionário a ser convertido pela
base; a parte inteira do resultado da primeira multiplicação será o valor da
primeira casa fracionária e a parte fracionária será de novo multiplicada pela
base; e assim por diante, até o resultado dar zero ou até encontrarmos o número
de casas decimais desejado. Por exemplo, vamos converter 15,6510
para a base 2, com 5 e com 10 algarismos fracionários:


Obs.: Em ambos os casos, a conversão foi interrompida quando encontramos o número de algarismos fracionários solicitadas no enunciado. No entanto, como não encontramos resultado 0 em nenhuma das multiplicações, poderíamos continuar efetuando multiplicações indefinidamente até encontrar (se encontrarmos) resultado zero. No caso de interrupção por chegarmos ao número de dígitos especificado sem encontramos resultado zero, o resultado encontrado é aproximado e essa aproximação será função do número de algarismos que calcularmos. Fazendo a conversão inversa, encontraremos:
Com 5 algarismos fracionários:
Parte inteira: 11112 = 1510
Parte fracionária: 0,101002
= 1x2-1 + 0x2-2
+ 1x2-3 + 0x2-4
+ 0x2-5 = 0,5 + 0,125 = 0,62510
Com 10 algarismos fracionários:
Parte inteira: 11112 = 1510
Parte fracionária: 0,10100110012
= 1x2-1 + 0x2-2
+ 1x2-3 + 0x2-4
+ 0x2-5 + 1x2-6
+ 1x2-7 + 0x2-8
+ 0x2-9 + 1x2-10
= 1/2 + 1/8 + 1/64 + 1/128 + 1/1024 = 0,5 + 0,125 + 0,015625 +
0,0078125 + 0,0009765625 = 0,649414062510
Ou seja, podemos verificar (sem nenhuma surpresa) que, quanto maior número de algarismos forem considerados, melhor será a aproximação.
Conversão de Números entre duas Bases quaisquer
Para converter números de uma base b para uma outra base b' quaisquer (isso
é, que não sejam os casos particulares anteriormente estudados), o processo
prático utilizado é converter da base b dada para a base 10 e depois da base 10
para a base b' pedida.
Exemplo: Converter 435
para ( )9.
435 = (4 x 5 + 3)10
= 2310 ==> 23/9 = 2 (resto 5)
logo 435 = 2310
= 259
Exercícios
1. Express the following decimal numbers as binary numbers
a) (129)10
b) (511)10
c) (1000)10
2. What is the largest decimal number that we can represent with (a) 9, (b) 10,
(c) 15 and (d) 16 bits?
3. Convert the following binary digits to hexadecimal
notation
a) (1010101010)2
b) (10000001)2
c) (11111111111)2
d) (100110011001)2
4. Give the binary equivalents of the following
hexadecimal numbers
a) (1000B0CA)16
b) (FADAB0A)16
c) (BADCA0)16
d) (CADEAD0)16
5. Convert the following numbers from the given base to the
bases that are indicated :
a) Decimal 11210 to binary, octal and hexadecimal
b) Hexadecimal 1AB69C16 to decimal, binary and octal
c) Binary 1011011012 to octal, decimal