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