SISTEMAS DE NUMERAÇÃO
Sistemas de Numeração Posicionais
Desde quando se começou a registrar informações sobre quantidades, foram criados diversos métodos de representar as quantidades. Esse histórico pode ser encontrado em
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 1x101) 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. No
comércio pedimos uma dúzia de rosas ou uma grosa de parafusos (base 12) e também
marcamos o tempo em minutos e segundos (base 60).
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 disporá de b algarismos, variando entre 0 e (b-1).
A representação 125,3810 (base 10) significa 1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2 :
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 (ver discussão em Bits & Bytes).
Havendo apenas dois algarismos, portanto dígitos binários, o elemento mínimo de
informação nos computadores foi apelidado de bit (uma contração
do inglês 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!
Uma curiosidade: o número "10b" vale sempre igual à base, porque em uma dada base b os algarismos possíveis vão sempre de 0 a (b - 1)! Como o maior algarismo possível em uma dada base b é igual a (b-1), o próximo número será (b - 1 + 1 = b) e portanto será sempre 10 e assim, numa dada base qualquer, o valor da base será sempre representado por "10"!
Obs.: Toda vez que um número for apresentado sem que seja indicado em qual sistema de numeração ele está representado, estenderemos que a base é dez. Sempre que outra base for utilizada, a base será obrigatoriamente indicada.
Um dia pode ser que os computadores se tornem obrigatórios e sejamos todos forçados por lei a estudar a aritmética em binário! Mas, mesmo antes disso, quem programa computadores precisa conhecer a representação em binário! Vamos começar entendendo as potências de dois (calma, isso é só o começo, depois piora!):
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 |
Depois (e só depois) de compreender bem a tabela acima, fazendo a devida correlação com a representação decimal, é conveniente decorar (aaaaaarrrrrrggggggghhhhhh!!!!!) os valores da tabela. As conversões entre base dois e base dez e as potências de dois são utilizadas a todo momento e seria perda de tempo estar toda hora convertendo. Da mesma forma que, uma vez entendido o mecanismo da multiplicação, decoramos a taboada, é muito mais efetivo saber de cor a tabela acima que fazer as contas de conversão toda vez que for necessário.
A representação binária é perfeitamente adequada para utilização pelos computadores. No entanto, um número representado em binário apresenta 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 (bem, não tão normais assim ...). Para facilitar a visualização e manipulação por programadores de grandezas processadas em computadores, são usualmente adotadas as representações octal (base 8) e principalmente hexadecimal (base 16). Ressaltamos mais uma vez que o computador opera apenas na base 2 e as representações octal e hexadecimal não são usadas no computador, elas se destinam apenas à manipulação de grandezas pelos programadores.
Representação em Octal e em Hexadecimal
Em projetos de
informática (isto é, nos trabalhos realizados pelos programadores, analistas e
engenheiros de sistemas), é usual representar quantidades usando sistemas em
potências do binário (octal e principalmente hexadecimal), para reduzir o número
de algarismos da representação e conseqüentemente facilitar a compreensão da
grandeza e evitar erros. No sistema octal (base 8), cada tres bits são
representados por apenas um algarismo octal (de 0 a 7). No sistema hexadecimal
(base 16), 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 (ou 255 em decimal) está em hexadecimal. Não confundir o "H" ou "h" com mais um dígito, mesmo porque em hexadecimal só temos algarismos até "F" e portanto não existe um algarismo "H".
Exemplo: Como seria a representação do número 1610 em binário, octal e hexadecimal?
Solução: Seria
respectivamente 100002, 208 e 1016