Professional Documents
Culture Documents
de
Sistemas de Numerao
ndice
1.
2.
OPERAES..................................................................................................................................10
2.1.
2.2.
2.3.
3.
Base decimal
A representao numrica comum utiliza a base 10. Isso significa que existem 10 algarismos
(ou dgitos) diferentes, representados pelos smbolos de 0 a 9. Utilizando apenas estes
algarismos podemos representar qualquer nmero. Comeando pelos nmeros mais simples,
representveis apenas por um dgito, temos:
0, 1, 2, , 9, 10
Ao chegar a 10 ocorre o primeiro incidente na contagem: esgotou-se a capacidade de
representao de nmeros apenas com um dgito passamos a usar dois dgitos, em que o da
esquerda tem maior peso neste caso tem o seu valor multiplicado por 10, ou seja, pelo valor da
base de numerao utilizada;
Continuando a contagem, temos:
, 10, 11, 12, , 18, 19, 20
Ao chegar a 19 esgotaram-se os dgitos na posio com menor peso. Por isso aumenta-se 1 na
posio seguinte; j contamos 2 vezes a base, ou seja, vamos em 210.
Retomando a contagem:
, 20, 21, 22, , 97, 98, 99, 100
Ao passar de 99 para 100 esgotaram-se os dgitos na segunda posio; isso significa que
contmos 10 vezes a base, ou seja 1010 = 102. Um dgito na 3 posio vale portanto a base ao
quadrado.
, 100, 101, , 998, 998, 1000,
A partir de 1000, o dgito na quarta posio vale por 103.
Resumindo, um nmero representado em base 10 pode ser decomposto da forma indicada nos
seguintes exemplos:
25=
10+5
367= 3
10 2 + 6 10 +7
2745= 2
10 3 + 7 10 2 + 4 10+5
Daniel Silva
1.2.
Em suma, da direita para a esquerda: um algarismo na primeira posio vale por si prprio, na
segunda posio vale pela base, na terceira pela base ao quadrado, na quarta pela base ao cubo e
assim sucessivamente. Por exemplo:
8317 = 8
10 3 + 3 10 2 + 1 10 + 7
10 3 + 3 10 2 + 1 10 1 + 7 10 0
Para manter a coerncia com esta notao designamos as posies, da direita para esquerda, por
posio 0, 1, 2 e assim sucessivamente. E designamos a potncia respectiva por peso. Assim,
dizemos que um algarismo na posio 0 tem peso 100, ou seja 1; na posio 1 tem peso 101, ou
seja 10; na posio 2 tem peso 102 ou seja 100, etc.
Um dgito di na posio i tem peso 10i, ou seja, vale
di 10i
Em geral, dado um nmero com os dgitos:
dn dn-1 ... d2 d1 d0
o seu valor numrico pode ser escrito como:
dn10n + dn-110n-1 + + d2102 + d1101 + d0100
1.3.
Daniel Silva
Arquitectura de Computadores
Pg. 6
1.4.
Vamos agora considerar a base 16. Na base 16 teremos 16 dgitos; vamos representar os
primeiros 10 da maneira habitual, isto , usam-se os algarismos de 0 a 9, a partir da vamos usar
as primeiras letras do alfabeto: A, B, C, D, E e F.
De resto, o processo de contagem semelhante, sendo que agora os nmeros representveis com
um dgito vo at F (15 em decimal):
0, 1, 2, ..., 9, A, B, C, D, E, F
Repare agora que ao chegarmos que depois do 9 no se passa nada de especial, pois temos
ainda o A (cujo valor 10). O F ser o maior nmero representvel com um algarismo;
Continuando a contagem:
, E, F, 10
Ao chegar a F esgotaram-se os dgitos, logo esgotou-se a capacidade de representao de
nmeros s com um dgito; passamos a ter que usar dois; na representao 10, o 1 da
esquerda vale a base (o valor de 10 na base 16 ser portanto 116 + 0);
, 10, 11, 12, , 19, 1A, 1B, 1C, 1D, 1E, 1F, 20
Em 20 contmos duas vezes o nmero de dgitos; vamos em 2base (em decimal seria 216);
, 20, 21, , 99, 9A, 9B, 9C, 9D, 9E, 9F, A0, A1, FC, FD, FE, FF, 100
O nmero representado por FF o maior valor representado com 2 dgitos na base 16. O seu
valor 1516+15 = 255. No hexadecimal 100, o 1 da esquerda vale por 162.
1.5.
Especialmente importante, dado que com essa representao com que os computadores
trabalham, a base 2, que tem apenas dois dgitos: 0 e 1. O processo de contagem idntico
ao praticado em qualquer outra base. No entanto, como apenas existem dois dgitos nesta base,
ao fazer uma contagem rapidamente aparecem sequncias com muitos dgitos, como ser visto
mais frente. Comeando a contagem:
0, 1, 10
Daniel Silva
Arquitectura de Computadores
Pg. 7
Esgotada a capacidade de representao com um dgito, passam-se a usar dois dgitos; o dgito
da direita vale 1 vez a base ou seja 2;
, 10, 11, 100
11 o maior nmero representvel com apenas dois dgitos. Em 100 passamos a ter trs
dgitos em que o da esquerda vale a base ao quadrado (22);
, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000,
E poder-se-ia continuar indefinidamente. Repare que na representao 1000, o 1 da esquerda
vale pela base ao cubo (23); e em 10000, o dgito da esquerda vale pela base quarta (24).
1.5.1
O conceito de representao numrica apresentado no ponto 1.1 para a base decimal generalizase facilmente para outras bases. Em qualquer base um nmero representa-se como uma
sequncia de dgitos. Sendo B a base, um dgito di na posio i tem peso Bi ou seja vale
di Bi
Em geral, para um dado um nmero com os dgitos:
dn dn-1 ... d2 d1 d0 ,
o seu valor numrico, dada a base B, :
dnBn + dn-1Bn-1 + ... + d2B2 + d1B1 + d0B0
Para clarificar a representao e evitar ambiguidades, pode-se explicitar a base de numerao
usando a seguinte notao:
(312)10 a sequncia de dgitos 312 na base 10;
(312)8 a sequncia de dgitos 312 na base 8;
(312)16 a sequncia de dgitos 312 na base 16.
O valor respectivo de cada um (em decimal) o que resulta da expresso anterior. Assim:
(312)
10
(312)
(312)
16
= 3 10 2 + 1 10 1 + 2 10 0
= 3 8 2 + 1 8 1 + 2 8 0
= 31 6 2 + 1 16 1 + 2 16 0
Daniel Silva
10
10
10
= (470)
= (312)
= (1422)
= (138)
8 = (CA)
8 = (312)
8
= (100111000)
=
(11001010)
16
16 = (1100010010)
16
Arquitectura de Computadores
2
2
2
Pg. 8
1.6.
A parte fraccionria
A representao estende-se facilmente para a parte fraccionria. Dada uma sequncia de dgitos
na base B:
dn dn-1 ... d2 d1 d0 . d-1 d-2 ... d-m ,
em que o ponto separa a parte inteira e a parte fraccionria, o valor associado
dnBn + dn-1Bn-1 + ... + d2B2 + d1B1 + d0B0 + d-1B-1 + d-2B-2 + ... d-m B-m
Por exemplo, a sequncia 42.57 em decimal vale:
410 1 + 2 10 0 + 5 10 -1 + 7 10 -2
Em base 10, o dgito direita do ponto tem peso 10-1, ou seja uma dcima; o dgito seguinte tem
peso 10-2, ou seja uma centsima; e assim sucessivamente. Genericamente, o dgito de posio i
direita do ponto (dita posio -i) tem peso B-i.
Exemplos:
(42.57)
10
(42.57)
(4C.A7)
(10.01)
Daniel Silva
= 4 10 1 + 2 10 0 + 5 10 -1 + 7 10 -2
= 4 8 1 + 2 8 0 + 5 8 -1 + 7 8 -2
= 4 16 1 + 12 16 0 + 10 16 -1 + 7 16 -2
2 = 2 + 1/4
16
Arquitectura de Computadores
Pg. 9
2. Operaes
2.1.
Adio
Contar basicamente tudo o que precisamos para fazer as operaes elementares de somar e
subtrair. Vamos, agora, rever os procedimentos que usamos para a realizao destas operaes.
Exemplo (em base 10), da direita para a esquerda:
21823
O mecanismo para somar exactamente igual em qualquer outra base. Vejamos um exemplo
em base 8:
Exemplo (em base 8), da direita para a esquerda:
3 e 2 d 5;
6 e 5 d 13 (a partir do 6 contamos 5 vezes na base 8: 7, 10, 11, 12, 13).
Como habitualmente, deixamos o algarismo 3 no resultado e juntamos o
10, fazendo o transporte de 1 para a posio seguinte;
2163
+ 252
2435
3 + 2 d 5;
2 + 6 d 10; ou seja, d 0 e vai 1;
6 + 5 + 1 (que vem de trs) d 14; ou seja, d 4 e vai 1;
21623
+ 2562
24405
2 + 3 d 5;
2 + 6 d 8;
6 + 5 d B (ou seja, a partir de 6 conta-se 5 na base 16: 7, 8, 9, A, B);
21623
+ 2562
23B85
3 + D d 10 ( D+3 => E F 10 )
1 + A + 6 d 11 ( B+ 6 => C D E F 10 11)
1 + 6 + 5 d C
F + 2 d 11
Daniel Silva
Arquitectura de Computadores
2F6A3
+ 256D
31C10
Pg. 10
2.2.
Subtraco
Os mecanismos que usamos vulgarmente para fazer a subtraco aplicam-se tambm, com os
mesmos princpios, quer base 10 quer s outras bases.
Considere uma subtraco elementar, por exemplo 7 2. A maneira mais bsica de fazer a
operao mais uma vez contar: neste caso contar de baixo (i.e. do subtraendo) para cima (i.e.
para o subtractor). O nmero de vezes que contarmos ser a diferena.
Para fazer a subtraco de nmeros com mais algarismos generalizamos o processo seguindo da
direita para a esquerda. Em cada posio fazemos a diferena entre o algarismo de cima e o de
baixo.
Exemplo: neste caso faramos:
2937
- 762
2175
Recorde que, numa subtraco, o transporte se junta ao algarismo de baixo. Ao fazer 6 para 3
estamos na realidade a fazer a diferena para 13 por consequncia temos que subtrair 10 na
posio seguinte. Podemos fazer isso retirando 1 ao algarismo de cima ou, como fazemos
habitualmente, adicionando 1 ao de baixo.
Salienta-se ainda a situao de transporte evidenciada no seguinte exemplo:
Neste caso, ao fazer 7 para 2 h um transporte. O transporte junta-se ao 9
para fazer 10 para 13, havendo por isso um novo transporte.
2932
- 797
2135
Note bem que apesar de nesta situao pensarmos 0 para 3 e realidade que
estamos a fazer 10 para 13; no nos podemos esquecer deste transporte.
Exemplo: vejamos agora o que acontece em base 8
2 para 7 d 5
6 para 3 d 5 (conta 7, 10, 11, 12, 13, ou seja 5 vezes ) e vai um
(4+1) para 4 d 7 (conta 6, 7, 10, 11, 12, 13, 14, i.e. 7 vezes) e vai um
1 para 2 d 1
Daniel Silva
Arquitectura de Computadores
2437
- 462
1755
2430
- 572
1636
CBC2
- 57A
C648
Pg. 11
5 para B d 6;
0 para C d C;
2.3.
1234
- 57A
CBA
As operaes em binrio so em tudo semelhantes. Dado que apenas existem dois dgitos, as
operaes possveis so muito poucas.
Na prtica, tudo se resume a saber somar dois dgitos, ou trs quando h transporte. As
possibilidades de soma de dois dgitos so apenas:
0 + 0, que d 0
1 + 0, que d 1
1 + 1, que d 0 e vai 1
Na soma de trs dgitos h apenas uma possibilidade adicional:
1 + 1 + 1, que d 1 e vai 1
Exemplo: uma soma de nmeros representados em binrio
0+1 d 1;
1+1 d 0 e vai 1;
1+1+1 d 1 e vai 1;
...
10110
+ 10111
101101
1 para 1 d 0;
1 para 0 d 1, e vai um;
1 e 1 d 0 (ou seja 10) para 1 (ou seja 11) d 1 e vai um;
1 e 0 d 1 para 1 d 0;
...
Daniel Silva
Arquitectura de Computadores
101101
- 10111
10110
Pg. 12
(312)
10
(312)
= 3 8 2 + 1 8 1 + 2 8 0 = 3 64 + 8 + 2
(312)
16
= 3 16 2 + 1 16 1 + 2 16 0 = 3 256 + 16 + 1
=3
(1001)
(4.02)
= 1 2 3 + 0 2 2 + 0 2 1 + 1 2 0 = 8 + 1
= 4 8 0 + 0 8 -1 + 2 8 -2 =
(A.BC) 16 = 10 + 11
16 -1 + 12 16 -2 =
(101.101)
2 = 4 + 1 + 1/2 + 1/16 =
3.2.
Vejamos agora o problema da converso de decimal para uma outra base. Ou seja o problema
de dado um nmero em Base 10 encontrar a representao do mesmo nmero noutra base
qualquer.
3.2.1
Parte inteira
Vamos considerar, primeiro, apenas a parte inteira. Para converter um nmero para base B
aplica-se o seguinte mtodo:
Note que, ao fazer uma diviso por B, o resto necessariamente um nmero menor que a base,
ou seja, este resto um algarismo da base. Deste modo, juntando os restos sucessivos estamos a
formar um nmero vlido na base B.
Daniel Silva
Arquitectura de Computadores
Pg. 13
8 +
8 +
8
+
8
+
3
5
7
1
o resultado (1753)8.
Exemplo: converter o mesmo nmero, mas agora para hexadecimal
1003 : 16 = 62 * 16 +
62 : 16 = 3 * 16 +
3
: 16 = 0 * 16 +
11
14
3
o resultado (3EB)16.
Exemplo: converter novamente o mesmo nmero, agora para binrio
1003 : 2 = 501 * 2
501 : 2 = 250 * 2
250 : 2 = 125 * 2
...
+
+
+
1
1
0
Parte fraccionria
Vejamos agora a parte fraccionria. Aqui o mtodo consiste em multiplicar o nmero pela base
e recolher parte inteira do nmero resultante da multiplicao. Mais uma vez, repare que
multiplicando um nmero s com parte fraccionria (i.e. com parte inteira 0) pela base B se
obtm um nmero menor que B ou seja um algarismo da base.
Exemplo: converter (0.6328125) para octal
0.6328125 * 8 =
0.0625 * 8 =
0,5 * 8 =
5,0625
0,5
4,0
o resultado (0.504)8.
Assim: em cada passo multiplica-se o nmero pela base. A parte inteira do resultado d um
algarismo do nmero. Com a parte fraccionria do resultado repete-se o procedimento.
Eventualmente, como acontece neste exemplo, obtemos um resultado com parte fraccionria 0 e
o processo termina. Nestas condies obtemos uma converso exacta um nmero na base de
converso exactamente igual ao original.
Mas nem sempre o processo corre to bem. Vejamos estas duas converses de um nmero
decimal para binrio:
Exemplo: converter: converter (0.125)10 para binrio
Daniel Silva
Arquitectura de Computadores
Pg. 14
0.125
0.250
0.5
2=
2=
2=
0.250
0.5
1.0
2=
2=
2=
2=
2=
0.4
0.8
1.6
0.2
0.4
Neste caso o processo no termina. Alis, podemos at concluir que entra num padro de
repetio, originando uma "dzima peridica infinita".
Nestas condies o nmero decimal original no pode ser representado com exactido na base
2. Eventualmente paramos e ficamos com uma representao aproximada. Por exemplo, usando
um mximo de 20 dgitos na parte fraccionria, o resultado aproximado seria:
(0.0010 0010 0010 0010 001)2
3.2.3
Sntese
Est agora reunido o conjunto de instrumentos que vamos usar para converso entre bases.
Para converter de uma qualquer base para decimal, usa-se a expresso geral indicada na
seco 3.
Para converter de decimal para uma outra base B usa-se o mtodo de divises sucessivas
apresentado na seco 4.1.
Se o nmero tiver parte fraccionria, fazemos a converso separada da parte inteira e da
parte fraccionria. A esta ltima aplicamos o mtodo de multiplicaes sucessivas
apresentado na seco 4.2, tendo em conta que, neste caso, poder no ser possvel obter
uma converso exacta.
Finalmente, se o problema for uma converso entre duas bases, B1 e B2, ambas diferentes da
base 10, podemos:
o primeiro converter de B1 para base 10,
o e depois converter o resultado da base 10 para B2.
3.3.
3.3.1
Binrio
Tudo o que se disse anteriormente vlido para binrio como para qualquer outra base. Mas em
binrio, havendo apenas dois dgitos, as expresses tomam em geral formas mais simplificadas
que permitem de alguma forma agilizar os processos de raciocnio.
Seja, por exemplo, a converso de um nmero binrio para decimal.
(101 1001)2 = 126 + 025 + 124 + 123 + 022 + 021 + 120
Daniel Silva
Arquitectura de Computadores
Pg. 15
As potncias de 2 multiplicam por 0 ou por 1 no primeiro caso para dar 0: no segundo caso
para dar a prpria potncia de 2. Ou seja, mais simplificadamente, podemos escrever:
(101 1001)2 = 26 + 24 + 23 + 1
esta expresso acaba por ter uma leitura muito directa: o que de facto interessa so os 1s do
nmero binrio; o valor decimal o que resulta das somas das potncias de 2 correspondentes
aos 1 do nmero binrio.
Para este e para muitos outros efeitos convm por vezes ter presentes os
valores das potncias de 2. Vale a pena decorar estes valores pelo menos
at 210.
Podemos assim imaginar um nmero binrio numa grelha onde os 1s
presentes tm o valor da potncia de 2 correspondente posio onde se
encontram
Peso
64
32
16
20
21
22
23
24
25
26
27
28
29
2 10
1
2
4
8
16
31
64
128
256
512
1024
Posio (expoente)
3.3.2
= 28 + 26 + 23 + 22 = 256 + 64 + 8 + 4
O mesmo tipo de modelo poderia ser usado para converter de decimal para binrio. Trata-se,
afinal de contas, de colocar 1's na grelha at que a "soma" forme o nmero pretendido.
Seja, por exemplo, o nmero 300. claro que seria excessivo colocar um 1 na posio 29 (512)
ou mais para esquerda - isso faria desde logo o nmero maior que 512. Correcto colocar um 1
no posio 28(256), tendo em vista formar um nmero maior que 256 (e menor que 512).
Tendo colocado o primeiro 1 na posio de valor 256, falta obter os 1s respeitantes ao resto do
nmero, ou seja 44 (300-256). Aplicando o mesmo raciocnio, colocamos um 1 na posio
26(32) ficando a sobrar 12. E assim sucessivamente.
A este procedimento de converso de decimal para binrio chamamos mtodo das subtraes.
Em suma o processo consiste em:
Daniel Silva
Arquitectura de Computadores
Pg. 16
256 + 44 -> 2
32 + 12 -> 2
8 + 4 -> 2
4 + 0 -> 2
8
5
3
3
1
O resultado (100101100)2.
3.3.3
Octal
0
1
2
3
4
5
6
7
Por exemplo:
1
101 4 + 1 = 5
110 4 + 2 = 6
000
001
010
011
100
101
110
111
Usando esta tabela podemos facilmente converter um nmero de octal para binrio:
(163)8 = (001 110 011)2 = (1110011)2
(32.04)8 = ( 011 010 . 000 100 ) 2 = ( 11010.0001) 2
Igualmente podemos fazer as converses contrrias, se necessrio juntando 0s esquerda da
parte inteira ou direita da parte fraccionria:
(11001)2 = (011 001)2 = (31) 8
(11011.01101) 2 = (011 011.011 010) 2= (33.32)8
Daniel Silva
Arquitectura de Computadores
Pg. 17
3.3.4
Hexadecimal
1001 8 + 1 = 9
1100 8 + 4 = 12 = C
1110 8 + 4 + 2 = 14 = E
Exemplos:
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
8
9
10
11
12
13
14
15
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
Com base nestas tabelas podemos facilmente converter nmeros de hexadecimal para binrio.
Exemplo:
(3A.0E)16 = (0011 1010 . 0000 1110)2 = ( 111010. 0000111)2
3.3.5
Para converter rapidamente entre octal e hexadecimal o mais fcil usar a converso intermdia
para binrio.
Assim, por exemplo para converter um nmero de hexadecimal para octal pode:
1. converter para binrio, fazendo corresponder 3 dgitos binrio a cada dgito octal;
2. reagrupar em grupos de 4 dgitos, se necessrio acrescentando 0 esquerda da parte inteira
ou direita da parte fraccionria;
3. converter em hexadecimal, fazendo corresponder um dgito hexadecimal a cada grupo de 4
dgitos binrio
Exemplo:
(1A.0E)16 = (0001 1010 . 0000 1110)2 = (011 010 . 000 011 100) 2= (32.034)8
3.4.
Outras consideraes
Num computador os bits aparecem organizados segundo grupos ou palavras. Por exemplo,
quando se diz que um computador segue uma arquitectura de 32 bits porque existem
elementos fundamentais dessa mquina e operaes nela realizadas que ocorrem em blocos de
32 bits.
Daniel Silva
Arquitectura de Computadores
Pg. 18
Seja, por exemplo, uma palavra de 4 bits. Com 4 bits possvel fazer 24 combinaes binrias
diferentes, de 0000 a 1111. A primeira corresponde ao nmero 0 e a ltima corresponde ao
nmero 15 o maior nmero inteiro que possvel representar usando apenas 4 bits.
Em geral, com N bits:
Uma sequncia de 8 bits vulgarmente designada por byte. Com um byte conseguem-se 28 =
256 combinaes binrias diferentes. O maior nmero 1111 1111 que vale 255 (FF em
hexadecimal, ou 377 em octal).
O nmero 210, 1024, vulgarmente designado por 1 Kilo (K). Muitas vezes relaciona-se 1K
com 10 bits, na medida em que com 10 bits podem-se fazer as tais 210 ou seja 1024
combinaes.
Com 11 bits temos 2K combinaes e com 12 bits temos 4K combinaes, ou seja:
211 = 2 210 = 2K
212 = 22 210 = 4K
Da mesma forma relaciona-se 1 Mega (M) com 20 bits e 1 Giga (G) com 30 bits:
1M = 220
1G = 230.
Daniel Silva
Arquitectura de Computadores
Pg. 19