Buscar

Fundamentos de Arquitetura de Computadores - WEBER

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 150 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 150 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 150 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução à Arquitetura
de Computadores
Representação de Dados
Arquitetura e Organização
Noções de Software Básico
Notas de aula
Raul Fernando Weber
Quarta versão - Março de 1998
Material para uso exclusivo em INF01 107
Departamento de Informática Aplicada
Instituto de Informática
UFRGS
ii
iii
PREFÁCIO
Essas notas de aula são uma compilação dos tópicos desenvolvidos na
disciplina de Introdução à Arquitetura de Computadores. Este material foi
desenvolvido para suprir a falta de um livro-texto que contivesse todos os
itens que são abordados na disciplina.
As principais áreas da disciplina são cobertas. Os capítulos 1 e 2 tratam da
representação de dados, cobrindo sistemas de numeração e representação de
dados numéricos em um computador. Os capítulos 3 e 4 enfocam as noções
básicas sobre arquiteturas de computadores, apresentando o modelo de von
Neumann e exercitando os principais conceitos através de um computador
hipotético, denominado de NEANDER. O capítulo 5 introduz um segundo
computador hipotético, o AHMES, dotado de uma maior número de
instruções a fim de exercitar os algoritmos de multiplicação e divisão vistos
no capítulo 6. Os capítulos 7 e 8 cobrem as notações aritméticas de ponto
fixo e ponto flutuante, assim como sistemas de codificação. O capítulo 9
apresenta os blocos básicos da organização de um computador, e o capítulo
10 ilustra a organização do NEANDER. Os capítulos 11 e 12 fornecem as
principais noções e a nomenclatura básica da área de entrada e saída e
software básico (compiladores, montadores e sistemas operacionais).
Enquanto a parte concernente à aritmética binária (capítulos 1, 2, 6, 7 e 8) é
completa em si mesmo, as outras visam somente introduzir o aluno nas áreas
de arquitetura e sistemas operacionais, e estão longe de estarem completas.
Estas demais áreas são posteriormente desenvolvidas em outras disciplinas
do Instituto de Informática.
iv
SOBRE O AUTOR
Raul Fernando Weber
Doutor em Informática pela Universidade de Karlsruhe (1986), Mestre em Ciência da
Computação, UFRGS (1980). Engenheiro Eletrônica, UFRGS (1976). Atualmente
professor do Instituto de Informática e do Curso de Pós-Graduação em Ciência da
Computação, UFRGS. Áreas de atuação: tolerância a falhas, segurança em sistemas de
computação e projeto automatizado de sistemas digitais.
Colaboradores
Taisy Silva Weber
Carlos Arthur Lang Lisboa
Ingrid E.S. Jansch-Porto
v
SUMÁRIO
1 Bases Numéricas
1.1 Introdução........................................................................................1-1
1.2 Representação de números.....................................................................1-2
1.3 Transformação entre bases.....................................................................1-2
1.3.1 Método polinomial............................................................................1-3
1.3.2 Método de subtrações........................................................................1-3
1.3.3 Método das divisões..........................................................................1-4
1.3.4 Método da substituição direta................................................................1-5
1.4 Exercícios propostos............................................................................1-5
2 Sistemas de numeração em computação
2.1 Introdução........................................................................................2-1
2.2 Soma de números binários.....................................................................2-2
2.3 Representação de números.....................................................................2-2
2.3.1 Números inteiros positivos..................................................................2-3
2.3.2 Números com sinal: representação em sinal-magnitude..................................2-3
2.3.3 Números com sinal: representação em complemento de (B–1)..........................2-4
2.3.4 Números com sinal: representação em complemento de B...............................2-9
2.4 Comparação entre os métodos...............................................................2-12
2.5 Subtração.......................................................................................2-13
2.6 Estouro de representação.....................................................................2-13
2.7 Exercícios propostos..........................................................................2-14
3 Componentes do computador e modelo de von Neumann
3.1 Breve histórico...................................................................................3-1
3.2 Princípios básicos...............................................................................3-3
3.3 Elementos funcionais básicos..................................................................3-4
3.3.1 Memória........................................................................................3-5
3.3.2 Unidade operacional..........................................................................3-6
3.3.3 Unidade de controle..........................................................................3-7
3.3.4 Registradores especiais.......................................................................3-8
3.3.5 Conjunto de instruções e modos de endereçamento......................................3-9
3.3.6 Ciclo de busca-decodificação-execução de instruções....................................3-9
3.3.7 Programação de um processador..........................................................3-10
3.4 Um computador de primeira geração: o EDVAC..........................................3-10
3.5 Modelo de von Neumann: o computador IAS.............................................3-15
3.5.1 Organização da UCP.......................................................................3-15
3.5.2 Conjunto de instruções.....................................................................3-15
3.6 Arquiteturas de 4, 3, 2, 1 e 0 endereços....................................................3-17
3.6.1 Arquitetura de 4 endereços.................................................................3-17
3.6.2 Arquitetura de 3 endereços.................................................................3-18
3.6.3 Arquitetura de 2 endereços.................................................................3-18
3.6.4 Arquitetura de um endereço................................................................3-19
3.6.5 Arquitetura de zero endereços.............................................................3-20
4 Computador hipotético NEANDER
4.1 Características....................................................................................4-1
4.2 Modos de endereçamento.......................................................................4-1
4.3 Conjunto de instruções.........................................................................4-2
4.4 Códigos de condição............................................................................4-2
vi
4.5 Formato das instruções.........................................................................4-3
4.6 Exemplo de programação.......................................................................4-3
4.7 Conclusão........................................................................................4-4
4.8 Exercícios de programação usando o NEANDER...........................................4-4
5 Computador hipotético AHMES
5.1 Características....................................................................................5-1
5.2 Modos de endereçamento.......................................................................5-1
5.3 Conjunto de instruções.........................................................................5-2
5.4 Códigos de condição............................................................................5-3
5.5 Manipulação aritmética..........................................................................5-4
5.5.1 Aritméticaem complemento de dois........................................................5-4
5.5.2 Aritmética de inteiros positivos..............................................................5-6
5.5.3 Aritmética em complemento de um.........................................................5-6
5.5.4 Aritmética em sinal/magnitude...............................................................5-7
6 Multiplicação e divisão
6.1 Multiplicação binária (números inteiros positivos)..........................................6-1
6.2 Multiplicação binária (números em complemento de dois).................................6-7
6.3 Divisão binária (números inteiros positivos).................................................6-8
6.4 Divisão binária (números em complemento de dois, positivos).........................6-14
6.5 Divisão binária (números em complemento de dois, positivos ou negativos)..........6-18
6.6 Exercícios resolvidos.........................................................................6-19
7 Números em ponto fixo e ponto flutuante
7.1 Números em ponto fixo........................................................................7-1
7.2 Soma e subtração em ponto fixo...............................................................7-2
7.3 Multiplicação em ponto fixo....................................................................7-3
7.4 Divisão em ponto fixo..........................................................................7-4
7.5 Números em ponto flutuante...................................................................7-4
7.6 Formatos de números em ponto flutuante....................................................7-6
7.7 Soma e subtração de números em ponto flutuante...........................................7-7
7.8 Multiplicação de números em ponto flutuante................................................7-7
7.9 Divisão de números em ponto flutuante......................................................7-8
8 Codificações BCD, Numérica e Alfanumérica
8.1 Números e Aritmética BCD....................................................................8-1
8.2 Codificação.......................................................................................8-3
8.3 Códigos BCD (ou códigos de 4 bits ponderados)...........................................8-3
8.4 Códigos de cinco bits ponderados.............................................................8-5
8.5 Códigos de sete bits ponderados..............................................................8-5
8.6 Códigos Gray (ou códigos cíclicos)...........................................................8-6
8.7 Códigos de detecção e correção de erros.....................................................8-8
8.8 Códigos m-de-n.................................................................................8-9
8.9 Códigos de paridade............................................................................8-9
8.10 Códigos de Hamming.........................................................................8-9
8.11 Códigos alfabéticos (ou códigos alfanuméricos).........................................8-11
9 Elementos básicos de organização
9.1 Introdução........................................................................................9-1
9.2 Portas lógicas e equações booleanas..........................................................9-1
9.3 Equivalência de portas lógicas.................................................................9-5
9.4 Circuitos combinacionais.......................................................................9-7
9.5 Circuitos sequenciais..........................................................................9-10
9.6 Unidade Aritmética e Lógica.................................................................9-15
9.7 Memória........................................................................................9-18
10 Organização do Neander
10.1 Elementos necessários.......................................................................10-1
vii
10.2 Fluxo de dados...............................................................................10-1
10.3 Sinais de controle............................................................................10-7
11 Entrada e saída
11.1 Introdução....................................................................................11-1
11.2 Dispositivos periféricos.....................................................................11-2
11.3 Memória secundária.........................................................................11-2
11.4 Comunicação com outras máquinas.......................................................11-2
11.5 Sistemas de E/S..............................................................................11-3
11.5.1 Entrada e saída programada..............................................................11-3
11.5.2 Acesso direto à memória..................................................................11-5
11.5.3 Interrupção.................................................................................11-5
11.5.4 Informações complementares............................................................11-5
12 Software básico
12.1 Introdução....................................................................................12-1
12.2 Linguagens de programação................................................................12-1
12.3 Exemplo com NEANDER..................................................................12-2
12.4 Programas a nível de sistema...............................................................12-5
12.5 Interfaces entre hardware e software......................................................12-7
12.6 Sistemas operacionais.......................................................................12-8
12.7 Funções básicas dos sistemas operacionais..............................................12-11
12.8 Processos e escalonamento................................................................12-12
12.9 Carga do sistema (inicialização da máquina).............................................12-13
12.10 Multiprogramação.........................................................................12-13
12.11 Multiprocessamento.......................................................................12-15
12.12 Exemplos de sistemas operacionais.....................................................12-15
12.13 Redes de computadores...................................................................12-16
Bibliografia
Apêndice: Utilização dos simuladores e depuradores
A.1 Simulador.......................................................................................A-1
A.2 Formato da tela.................................................................................A-1
A.3 Entrada numérica...............................................................................A-2
A.4 Comandos de operação........................................................................A-2
A.4.1 Hexadecimal x decimal.....................................................................A-3
A.4.2 Visualização Simbólica.....................................................................A-3
A.4.3 Editando um programa na memória.......................................................A-3
A.4.4 Inspecionando a memória..................................................................A-4
A.4.5 Imprimindo porções da memória..........................................................A-4
A.4.6 Zerando uma área de memória.............................................................A-4
A.4.7 Movendo blocos.............................................................................A-4
A.4.8 Executando um programa..................................................................A-4
A.4.9 Salvando e carregando arquivos...........................................................A-5
1-1
Capítulo
UM
Bases Numéricas
1.1 Introdução
Quando o homem aprendeu a contar, ele foi obrigado a desenvolver símbolosque
representassem as quantidades e grandezas que ele queria utilizar. Estes símbolos, os
algarismos, constituem a base dos sistemas de numeração.
Nos tempos pré-históricos o homem utilizou uma correspondência um-para-um entre os
objetos a serem contados e os seus dedos, ou então para pedrinhas ou mesmo para “riscos”.
Um sistema deste tipo seria um “sistema unário” (com um único símbolo):
Os primeiros algarismos encontrados consistiam em marcas horizontais ou verticais (como as
acima) com traços de ligação entre elas para definir as quantidades superiores a um. Os
símbolos romanos básicos podem ser considerados como uma evolução do sistema acima.
Os algarismos romanos são basicamente aditivos: assim, por exemplo, III = I + I + I. Para
facilitar a representação de grandes quantidades, foram introduzidos símbolos especiais para
grupos:
I=1 V=5 X=10 L=50 C=100 D=500 M=1000
Além disto, utilizam-se uma série de regras (como por exemplo a posição relativa dos
símbolos aos seus vizinhos), que permitiam interpretar estes símbolos e determinar qual o
número que estava sendo representado:
VI=5+1=6 CXVI=100+10+5+1=116
IV=5-1=4 MCMLIX=1000+(1000-100)+50+(10-1)=1959
A realização de cálculos com este sistema, especialmente para operações como multiplicação
e divisão, era entretanto extremamente complexa e de aplicação praticamente impossível.
Posteriormente, os árabes utilizaram-se de um sistema originário da Índia, que possuía 10
símbolos (0 a 9), com os seguintes símbolos (da esquerda para direita, 1234567890):
Este sistema começou a ser utilizado na Europa no século 12, e é conhecido atualmente como
sistema de numeração arábica (mas com outros algarismos), e se destaca pelas seguintes
características:
• existe um símbolo para o valor nulo.
• cada algarismo utilizado é uma unidade maior que o seu predecessor.
1-2
• a notação é posicional, ou seja, o valor de um algarismo é determinado pela sua
posição dentro do número. Cada posição possui um determinado peso.
1.2 Representação de números
Os sistemas atuais formam os números pela fórmula a seguir, onde a representa o número
propriamente dito, B representa a base do sistema de numeração (B‡ 2), xi representam os
algarismos (0£ xi<B), e n representa o número de posições utilizadas. Com B=10 tem-se o
sistema decimal.
 n
a =
S
(xi.Bi)
i=–m
O algarismo xi tem peso Bi, determinado pela sua posição. Para i com valores positivos,
tem-se pesos maiores que a unidade; para i=0 tem-se exatamente o peso unitário (B0=1).
Para valores negativos de i, tem-se pesos menores que a unidade (fracionários). Para o caso
específico de números inteiros, utilizando-se n dígitos (ou “casas”), indexados de 0 até n–1,
a fórmula fica:
 n-1
a =
S
(xi.Bi)
i=0
ou, por extenso, expandindo-se o somatório:
a =xn-1.Bn-1+xn-2.Bn-2+. . . . +x2.B2+x1.B1+x0.B0
ou ainda, simplificando-se a expressão:
a =xn-1.Bn-1+xn-2.Bn-2+. . . . +x2.B2+x1.B+x0
Para os sistemas de numeração utilizam-se as seguintes regras:
• A base B de um sistema é igual à quantidade de algarismos distintos utilizados. Para a
base decimal, tem-se 10 algarismos distintos (de 0 a 9).
• Quando uma posição é ocupada pelo maior algarismo, e ela deve ser aumentada de uma
unidade, então esta posição recebe o símbolo nulo e a posição seguinte deve ser
aumentada de uma unidade. Assim, 9+1=10, 19+1=20, 99+1=100, 1999+1=2000.
• O algarismo mais a direita (denominado de dígito menos significativo) tem peso um. O
algarismo imediatamente a esquerda tem o peso da base B, o seguinte a esquerda tem
peso de B ao quadrado, depois B ao cubo, e assim por diante.
• O valor de cada algarismo de um número é determinado multiplicando-se o algarismo
pelo peso de sua posição.
• O valor de um número é determinado pela soma dos valores de cada algarismo.
1.3 Transformação entre bases
Os computadores atuais utilizam internamente somente um sistema de numeração: o sistema
binário (B=2), com os algarismos 0 e 1. Este sistema foi estudado profundamente pelo
matemático alemão Leibniz, no século 17. Somente com o advento dos computadores
eletrônicos digitais, entretanto, tal sistema começou a ser utilizado na prática. Atualmente,
1-3
todos os computadores utilizam internamente o sistema binário para armazenamento e
manipulação de números e dados. O tratamento de números representados em outras bases
ocorre através de rotinas de codificação e decodificação. O mesmo ocorre com símbolos
alfanuméricos.
1 .3 .1 Método polinomial
Como cada número pode ser representado por um polinômio em uma certa base, tudo o que
se deve fazer para transformar um número de uma base para outra é interpretar este número
como um polinômio utilizando-se aritmética da base de destino:
1100012=1.25+1.24+0.23+0.22+0.21+1.20=32+16+0+0+0+1=4910
1100012=1.25+1.24+0.23+0.22+0.21+1.20=408+208+0+0+0+18=618
Nos exemplos acima, simplesmente aplicou-se a fórmula:
a = xn-1.Bn-1+xn-2.Bn-2+. . . . +x2.B2+x1.B+x0
onde B é a base de origem e a é o número resultante na base destino. Observe-se que todos
os cálculos são realizados na aritmética da base de destino.
1 .3 .2 Método de subtrações
Sabendo-se que um número em uma determinada base B é representado pela fórmula
a =xn-1.Bn-1+xn-2.Bn-2+. . . . +x2.B2+x1.B+x0
a conversão para determinação dos coeficientes xi é iniciada da esquerda (xn-1) para a direita
(até x0). Inicia-se determinando os valores de n (a quantidade de dígitos necessária) e de xn-1
(o dígito mais significativo). Para tanto procura-se o produto (na base origem) do maior
coeficiente com a maior potência da nova base, que está contido no número a ser convertido,
ou seja, procura-se o maior produto xn-1.Bn-1 que seja menor (ou igual) que a. Este
coeficiente xn-1 é o algarismo a ser utilizado na posição mais à esquerda (dígito mais
significativo) do número na nova base. Subtrai-se este produto do número a ser convertido.
Com isto tem-se:
a ' = a – xn-1.Bn-1 = xn-2.Bn-2+. . . . +x2.B2+x1.B+x0
Para determinar-se o algarismo seguinte à direita (xn-2), repete-se o processo, usando agora a
diferença do passo anterior (a') e a potência imediatamente inferior (se no passo anterior
usou-se a potência Bi, utiliza-se agora Bi-1), e assim sucessivamente até todos os n dígitos
terem sido determinados. Note-se que o resultado das diversas subtrações sempre deve ser
positivo (ou zero). Se a subtração não for possível, isto indica que o coeficiente xi é zero.
681-1.29=681-512=169 169-0.28=169-0.256=169
169-1.27=169-128=41 41-0.26=41-0.64=41
41-1.25=41-32=9 9-0.24=9-0.16=9
9-1.23=9-8=1 1-0.22=1-0.4=1
1-0.21=1-0.2=1 1-1.20=1-1=0
Ou seja, o número final, em binário, é 1010101001.
1-4
Se o resultado de uma subtração produzir resultado zero, isto significa que todos os dígitos
restantes são zero, como ilustrado no exemplo a seguir.
680-1.29=680-512=168 168-0.28=168-0.256=168
168-1.27=168-128=40 40-0.26=40-0.64=40
40-1.25=40-32=8 8-0.24=8-0.16=8
8-1.23=8-8=0
Os coeficientes restantes (x2, x1 e x0) são iguais a zeros, e o número final, em binário, é
1010101000.
O método também se aplica para números com frações. Se não for possível chegar a zero
após um certo número de posições, então interrompe-se o método após o número de casas
desejado.
6,125-1.22=6,125-4=2,125 2,125-1.21=2,125-2=0,125
0,125-0.20=0,125-0.1=0,125 0,125-0.2-1=0,125-0.0,5=0,125
0,125-0.2-2=0,125-0.0,25=0,125 0,125-1.2-3=0,125-0,125=0
Ou seja, o número final é 110,001.
O método também se aplica para outras bases. Seja a conversão de 6,8125 de decimal para
octal:
6,8125-6.80=6,8125-6=0,8125 0,8125-6.8-1=0,8125-0,7500=0,0625
0,0625-4.8-2=0,0625-0,0625=0
Ou seja, 6,812510=6,648. Note-se que sempre se utiliza a aritmética da base de origem.
1 .3 .3 Método das divisões
O número a ser convertido é dividido pela nova base (na aritmética da base de origem). O
resto desta divisão forma o algarismomais a direita (menos significativo) do número
convertido. O quociente é novamente dividido, e assim sucessivamente, até o quociente final
ser zero. A sequência de todos os restos forma o novo número.
Note-se que ao dividir o número a pela base B obtém-se:
a /B=(xn-1.Bn-1+xn-2.Bn-2+. . . . +x2.B2+x1.B+x0)/B
ou seja
a /B=xn-1.Bn-2+xn-2.Bn-3+. . . . +x2.B1+x1, com resto igual a x0
A divisão seguinte por B produz como resto x1, e assim sucessivamente até xn-1.
53÷2=26, resta 1 26÷2=13, resta 0
13÷2=6, resta 1 6÷2=3, resta 0
3÷2=1, resta 1 1÷2=0, resta 1
Número binário resultante: 110101
Para frações, o método se modifica um pouco: a fração é multiplicada pela nova base; a parte
inteira resultante forma o algarismo mais à esquerda da nova fração e a parte fracionária é
submetida novamente ao método, até o resultado ser zero (ou até atingir-se o número de
dígitos significativos desejado).
1-5
Exemplo:
0,828125 . 2 = 1,65625 Parte inteira = 1 Fração = 0,1
0,65625 . 2 = 1,3125 Parte inteira = 1 Fração = 0,11
0,3125 . 2 = 0,625 Parte inteira = 0 Fração = 0,110
0,625 . 2 = 1,25 Parte inteira = 1 Fração = 0,1101
0,25 . 2 = 0,5 Parte inteira = 0 Fração = 0,11010
0,5 . 2 = 1,0 Parte inteira = 1 Fração = 0,110101
1 .3 .4 Método da substituição direta
Este é o método mais fácil, entretanto funciona somente para bases que são potências inteiras
entre si, como por exemplo de octal para binário (e vice-versa) ou de hexadecimal para
binário (e vice-versa). Seja B1=B2m; para um determinado m inteiro, então tem-se as
seguintes regras:
• para converter de B1 (a maior base) para B2 (a menor base), cada algarismo de B1 é
substituído por m algarismos equivalentes de B2:
5 1 78 = 101 001 1112
7 0 C16 = 0111 0000 11002
• para converter de B2 para B1, agrupam-se os algarismos em grupos de m, tomando-se
a vírgula como referência, ou seja, formam-se grupos de m algarismos tanto para a
esquerda da vírgula (parte inteira) como para a direita (parte fracionária). Cada grupo é
então transformado no seu algarismo equivalente na nova base:
1110,011012 = 001 110 , 011 010 = 1 6 , 3 28
1110,011012 = 1110 , 0110 1000 = E , 6 816
Observe-se que este método também pode ser utilizado entre duas bases que não seja
diretamente uma potência da outra, desde que ambas sejam potências inteiras de uma terceira
base. Assim, por exemplo, pode-se converter da base octal para hexadecimal (usando-se a
base 2 como terceira base).
1.4 Exercícios propostos
1. Converter para a base decimal os seguintes números:
a) 1010102
b)10103
c) 10214
d) 10256
e) 21658
f) 1FA216
g) E1A16
h) 7078
2. Usando o método das divisões, converter os seguintes números decimais para a base
indicada:
a) 96 para a base ternária
b) 96 para a base octal
c) 258 para a base hexadecimal
d) 258 para a base binária
e) 49 para a base quaternária
f) 57 para a base ternária
1-6
g) 56 para a base binária
3. Usando o método das subtrações, converter os seguintes números decimais para a base
indicada:
a) 96 para a base ternária
b) 96 para a base octal
c) 258 para a base hexadecimal
d) 258 para a base binária
e) 49 para a base quaternária
f) 57 para a base ternária
g) 56 para a base binária
4. Usando o método das substituições, converter os seguintes números para a base indicada:
a) 1011000110102 para a base octal
b) 1011000110102 para a base hexadecimal
c) 001011001012 para a base octal
d) 001011001012 para a base hexadecimal
e) 3478 para a base binária
f) 72418 para a base binária
g) 3AF16 para a base binária
h) 7E4B16 para a base binária
2-1
Capítulo
DOIS
Sistemas de numeração em computação
2.1 Introdução
Em todas as fórmulas usadas a seguir, ‘B’ representa a base do sistema de numeração, ‘n’
representa a quantidade de dígitos disponíveis para representar os números, e ‘a’, ‘b’ e ‘c’
representam números. A fórmula utilizada para representar um número inteiro:
 n-1
a =
S
(xi.Bi)
i=0
será representada por a=S n-1xiBi, ficando a variação de i desde 0 até o limite (n-1) implícita.
Para uma determinada base B, empregando-se n dígitos, pode-se representar Bn combi-
nações distintas, ou seja, Bn números distintos. Assim, para base decimal com três dígitos
pode-se representar 1000 números distintos (com zero incluído!). Entretanto, com os
mesmos três dígitos e base dois, representa-se somente 8 números distintos. Assim,
números binários vão exigir um grande número de dígitos, e normalmente trabalha-se com
grandes cadeias de zeros e uns. Isto pode levar a erros visuais, e por isso empregam-se
comumente as notações em base 8 e base 16 para representar números binários.
A tabela abaixo lista os primeiros 16 números em binário, decimal, octal e hexadecimal.
Binário Decimal Octal Hexadecimal
0000 0 00 0
0001 1 01 1
0010 2 02 2
0011 3 03 3
0100 4 04 4
0101 5 05 5
0110 6 06 6
0111 7 07 7
1000 8 10 8
1001 9 11 9
1010 10 12 A
1011 11 13 B
1100 12 14 C
1101 13 15 D
1110 14 16 E
1111 15 17 F
Tabela 2.1 - Números em binário, decimal, octal e hexadecimal
Em computação trabalha-se normalmente com quatro bases: a decimal, para entrada e saída
dos dados (já que nossa sociedade é baseada no sistema decimal); a binária, para os cálculos
internos; a hexadecimal, como forma compactada de representação interna; e a octal, também
por este motivo. Note-se que a escolha das bases 8 e 16 não é ocasional: as transformações
2-2
entres as bases 2, 8 e 16 pode ser feita facilmente pelo método da substituição direta. Embora
a base hexadecimal seja de representação mais complexa (utiliza letras e dígitos), ela é
preferida sobre a base octal por ser mais compacta, ou seja, requerer menos espaço para
representar os resultados.
Os números do sistema binário são formados como qualquer outro número do sistema de
numeração arábico (inclusive em octal ou hexadecimal): cada novo número é obtido por
enumeração, somando-se um ao seu antecessor (e observando-se a regra do “vai-um”).
Cada dígito do sistema binário (0 e 1) é denominado de bit, a contração de binary digit. A
determinados conjuntos de bits são empregados nomes específicos. Assim, um quarteto (4
bits) é frequentemente denominado de nibble, e um octeto (8 bits) recebe a denominação de
byte (ou o termo aportuguesado baite). Os múltiplos deste conjuntos utilizam os mesmos
denominadores que no sistema decimal (K para kilo, M para Mega, G para giga, T para
Tera, P para Peta), mas o fator multiplicativo não é 1000 (103) mas sim 1024 (210). Assim,
um kilobit (abreviado 1Kb) são 1024 bits, e um kilobyte (abreviado 1KB) são 1024 bytes.
Um megabyte (1MB) são 1024 KB; um gigabyte (1GB) são 1024 MB, um terabyte (1TB)
são 1024 GB e assim por diante.
2.2 Soma de números binários
A soma de dois números binários utiliza as mesmas regras da soma no sistema decimal.
Como existem entretanto somente dois símbolos, a tabela de soma é extremamente simples:
a c d=a+c
0 0 0
0 1 1
1 0 1
1 1 0 e “vai-um”
Tabela 2.2 - Tabela verdade de um meio-somador (half adder)
Observe-se que soma de 1 mais 1 resulta em 10 (dois), ou seja, o dígito do resultado é zero e
existe a ocorrência de um “vai-um” (carry out, em inglês). Considerando-se a possível
existência de um “vem-um” (carry in) e de “vai-um” (carry out), obtém-se a tabela a seguir.
a c vem-um d=a+c vai-um
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Tabela 2.3 - Tabela verdade de um somador completo (full adder)
2.3 Representação de números
A representação de números inteiros positivos é direta e imediata. Entretanto, é necessário
expandir (ou modificar) esta representação para incluir também números negativos. Diversas
representações foram desenvolvidas com este propósito. Quatro destas representações, as
mais comuns atualmente, são analisadas a seguir: inteiros positivos, sinal/magnitude,
complemento de B-1 e complemento de B.2-3
2 .3 .1 Números inteiros positivos
Considerando-se somente a representação de números inteiros positivos, com n dígitos
pode-se representar Bn números, dispostos no intervalo fechado entre zero (o menor) e Bn–1
(o maior).
Faixa de representação: [ 0 , Bn–1 ]
Assim, para 2 dígitos decimais tem-se 100 números, de 0 a 99; para 3 dígitos em base 3 tem-
se 27 números, de 0 (0003) a 26 (2223); para 4 dígitos binários tem-se 24=16 números,
desde zero (00002) até 15 (11112); para 8 dígitos binários tem-se 28=256 números, desde
zero (000000002) até 255 (111111112); Não existe previsão para números negativos.
Cálculo do valor do número
O valor de número positivo é calculado pelo polinômio S n-1xiBi, exatamente o mesmo
método utilizado para a conversão pelo método polinomial.
Troca de sinal
Como não existe a capacidade de representar números negativos, não existe tal função.
Soma de dois números
A soma de dois números positivos é realizada somando-se os dois polinômios dígito a
dígito, de acordo com as tabelas da soma na base em questão. Para base 2 utiliza-se a Tabela
2.3 da seção 2.2. Naturalmente, nesta soma leva-se em conta os eventuais “vai-um” e “vem-
um”.
2 .3 .2 Números com sinal: representação em sinal-magnitude
Para permitir números com sinal, esta representação utiliza um dígito (normalmente o mais
significativo) para representar o sinal. No sistema decimal, o símbolo ‘–’ é usado para
indicar números negativos e ‘+’ (ou simplesmente um espaço vazio) para números positivos.
Com isto ganha-se a possibilidade de representar inteiros negativos, mas a faixa de
representação é reduzida porque tem-se agora somente (n–1) dígitos para representar a
magnitude.
Faixa de representação: [ –(Bn-1–1) , +(Bn-1–1) ] ou [ –(Bn-1–1) , (Bn-1–1) ]
Divide-se a gama de representação em dois subconjuntos simétricos, um para números
negativos e outro para positivos. A faixa dos números positivos é reduzida de um fator igual
a base B. Por exemplo, para base decimal com dois dígitos, se consideramos somente
números positivos tem-se a faixa de 0 até 99; com a representação em sinal magnitude
obtém-se a faixa de –9 até +9. Além disto, existem duas representações para o zero: –0 e +0.
De um modo geral, para uma base qualquer, das Bn combinações possíveis usam-se somente
2.Bn-1–1 (descontando-se o duplo zero). No exemplo acima, das 100 combinações são
utilizadas somente 19.
Em binário, entretanto, com B=2, obtém-se 2.2n-1–1, ou seja, 2n–1 (isto é, Bn–1). Assim,
somente uma representação é perdida (a do duplo zero). Obs.: no sistema binário costuma-se
utilizar ‘1’ no lugar de ‘–’, e ‘0’ no lugar de ‘+’. Assim, para 4 dígitos, 0111 representa 7,
1111 representa –7, 0000 representa zero e 1000 representa –0.
2-4
Cálculo do valor do número
Um número em sinal magnitude, independente de qual a base utilizada, é formado por duas
parcelas, escritas lado a lado. A parcela à esquerda (S(a)) representa o sinal e a parcela à
direita (M(a)) a magnitude:
a = S(a)M(a)
onde S(a) é ‘+’ ou ‘–’, e M(a)=S n-2xiBi. Em binário, utiliza-se usualmente ‘0’ no lugar de
‘+’ e ‘1’ ao invés de ‘-’.
Troca de sinal
Para trocar o sinal de um número ‘a’ em sinal magnitude, troca-se simplesmente S(a),
mantendo-se a magnitude M(a). Assim, no caso de c=–a, tem-se M(c)=M(a), e se S(a)=‘+’,
então S(c)=‘–’, e se S(a)=‘–’ então S(c)=‘+’.
Soma de dois números
A soma de dois números em sinal magnitude é realizada de acordo com as regras da tabela
abaixo. No caso, deseja-se calcular d=a+c.
S(a) S(c) S(d) M(d) Exemplo
+ + + M(a)+M(c) 5 + 7 = 12
– – – M(a)+M(c) -5 + -7 = -12
+ – se M(a)‡ M(c), + M(a)–M(c) 7 + -5 = 2
se M(a)<M(c), – M(c)–M(a) 5 + -7 = -2
– + se M(a)>M(c), – M(a)–M(c) -7 + 5 = -2
se M(a)£ M(c), + M(c)–M(a) -5 + 7 = 2
Tabela 2.4 - Soma em sinal / magnitude
Note-se que, para realizar somas de números em sinal/magnitude, deve-se conhecer as
tabelas de soma e de subtração da base em que se estiver trabalhando. Esta necessidade de
realizar duas operações distintas (soma e subtração) torna muito mais complexa a
manipulação de números em sinal/magnitude pelo computador. Assim, apesar de familiar ao
ser humano, esta notação é pouco utilizada em computação.
Para resolver o problema de representação de números negativos, optou-se por usar a
notação em complemento da base, como visto a seguir. Duas notações foram desenvolvidas:
em complemento de (B-1) e em complemento de B Observação: a tabela de subtração em
binário será vista mais adiante (seção 2.5).
2 .3 .3 Números com sinal: representação em complemento de (B–1)
Para permitir que a operação de soma seja realizada de forma única, sem preocupação com os
sinais dos operandos, é utilizada a representação em complemento. Números positivos são
representados na forma normal, e números negativos são representados em complemento.
Na representação em complemento de (B-1), o complemento de um número a é obtido
subtraindo-se este número da maior quantidade representável, ou seja, Bn–1–a. Assim, na
base 10, com 3 dígitos, o complemento de 9 (10-1) de um número a é obtido pela fórmula
999-a. Note-se que isto equivale a subtrair cada um dos dígitos de a de 9, que é justamente a
base 10 menos um. Generalizando, para representar números negativos em complemento de
B–1, cada algarismo xi é complementado individualmente pela fórmula B–1–xi. A tabela a
seguir ilustra o cálculo do complemento para diversas bases.
2-5
Algarismo B=2 B=3 B=4 B=8 B=9 B=10
0 1 2 3 7 8 9
1 0 1 2 6 7 8
2 - 0 1 5 6 7
3 - - 0 4 5 6
4 - - - 3 4 5
5 - - - 2 3 4
6 - - - 1 2 3
7 - - - 0 1 2
8 - - - - 0 1
9 - - - - - 0
Tabela 2.5 - Exemplos de cálculo de complemento de B-1
A notação em complemento elimina a necessidade de representação explícita do símbolo do
sinal, ou seja, não existe um símbolo especial para o sinal. A faixa de números
representáveis é dividida em duas. Uma das faixas representa números positivos, e a outra
faixa representa números negativos. Existindo m representações, as primeiras m/2 são
utilizadas para números positivos (de 0 a m/2), e as m/2 representações seguintes (de m/2 até
m) são utilizadas para números negativos. A faixa de representação fica:
Faixa de representação, para B par: [ –(Bn/2–1) , +(Bn/2–1) ]
Faixa de representação, para B ímpar: [ –(Bn–3)/2 , +(Bn–1)/2 ]
A tabela a seguir ilustra as faixas para diversas bases. Note-se que a gama de representação é
dividida em dois subconjuntos, um para números negativos e outro para positivos. A faixa
dos números positivos é reduzida da metade (em relação aos inteiros positivos). Continua
existindo a dupla representação do zero, assim como em sinal magnitude, mas não existe
mais a perda de capacidade de representação devido a existência do dígito de sinal.
Base Num.dig. Faixa Faixa em decimal
2 4 1000,1001,..,1111,0000,0001,..,0111 –7,–6,..,–0,+0,1,..7
3 3 112,120,121,..,222,000,001,..,111 –12,–11,–10,..,–0,+0,1,..,13
4 3 200,201,..,333,000,001,..,132,133 –31,–30,..,–0,+0,1,..31
8 3 400,401,..,777,000,001,..,376,377 –255,–254,..,–0,+0,..,255
9 2 45,46,..,88,00,01,..,43,44 –39,–38,..,–0,+0,1,..,39,40
10 2 50,51,..,98,99,00,01,..,48,49 –49,–48,..,–1,–0,+0,..,48,49
Tabela 2.6 - Exemplos de faixas de representação em complemento de B-1
Por exemplo, para base decimal com dois dígitos, se consideramos somente números posi-
tivos tem-se a faixa de 0 até 99; com a representação em complemento de 9 obtém-se a faixa
de 50 a 99 e 0 a 49. A primeira metade (de 50 a 99) representa números negativos (de –49 a
–0); a segunda metade (de 0 a 49) representa números positivos. Note-se que um número
iniciando por 9, 8, 7, 6 ou 5 é negativo; iniciando por 0, 1, 2, 3 ou 4 é positivo. Em binário,
para 4 dígitos, tem-se a faixa 1000 a 1111 (–7 a –0) e 0000 a 0111 (0 a 7). Números
iniciando por 1 são negativos, e iniciando por 0 são positivos.
Para bases ímpares, existe um número positivo a mais, e paraa determinação do sinal não
basta a verificação do dígito mais significativo (veja-se a seguir). Por exemplo, na tabela 2.6,
os números em base 3 iniciando por zero são positivos, e os números iniciando por 2 são
negativos, mas dos números iniciando por 1 metade são positivos (100, 101, 102, 110 e
111) e metade são negativos (112, 120, 121 e 122).
2-6
Cálculo do valor do número
Um número em complemento de (B–1) tem o seu valor calculado de acordo com os
seguintes passos:
• determinação do sinal: se a representação do número, interpretado como inteiro
positivo, estiver na metade superior da faixa, ele é negativo. Se estiver na metade
inferior da faixa, é positivo. Ou seja, sendo o número a=S n-1xiBi, se a ‡ Bn/2, então
este número em complemento de (B–1) é negativo. Se a<Bn/2, então, em complemento
de (B–1), ele é positivo. Obs.: para bases pares, basta analisar o dígito mais
significativo, conforme já explicado.
Assim, por exemplo, para base 3 com três dígitos, tem-se 33 = 27 representações. A
metade é 13,5, e assim os números de 0 a treze (representados respectivamente por
000 a 111) são positivos, e os de 14 a 26 (representados por 112 a 222) são negativos.
Note-se que existem 14 números positivos, e 13 números negativos.
Em outro exemplo, para base 4 com três dígitos, tem-se 43 = 64 combinações. A
metade é 32, e então os números de 0 a 31 (representados por 000 a 133) são
positivos, e os de 32 a 63 (representados por 200 a 333) são negativos. Existem neste
caso 32 números positivos e 32 números negativos.
• determinação da magnitude do número. Se o número a for positivo, então sua
magnitude é dada por M(a)= S n-1xiBi. Se o número a for negativo, para calcular sua
magnitude (valor absoluto) deve-se calcular o complemento de (B–1) de cada
algarismo, ou seja, substitui-se cada dígito pelo seu complemento. Alternativamente,
também é possível manipular todo o número:
M(a)=S n-1(B-1-xi)Bi = S n-1(B-1)Bi – S n-1xiBi = Bn–1– S n-1xiBi =Bn–1–a
Assim, por exemplo, para base 3 com três dígitos, a magnitude de 110 é 12 (o número
é positivo). Já o número 112 é negativo, e assim seus dígitos devem ser
complementados, resultando em 110, ou seja, a magnitude também é 12. Utilizando-se
a fórmula acima, tem-se também 33–1–(112)3 = 27–1–14=26–14=12.
A tabela a seguir fornece diversos exemplos do cálculo do valor de um número, de acordo
com as regras descritas acima.
Base Num.dig. Número Sinal Magnitude Num.decim.
2 4 1110 – 1 –1
2 4 1001 – 6 –6
2 4 1010 – 5 –5
2 4 0101 + 5 +5
3 3 102 + 11 +11
3 3 111 + 13 +13
3 3 121 – 10 –10
10 2 98 – 1 –1
10 2 99 – 0 –0
10 3 45 + 45 +45
10 3 54 – 45 –45
10 3 76 - 23 -23
10 3 50 - 49 -49
Tabela 2.7 - Exemplos de cálculo do valor de um número em complemento de B-1
2-7
Troca de sinal
Para trocar o sinal de um número a em complemento de (B–1), basta complementar, também
em B–1, cada um de seus dígitos. Assim, no caso de c=–(a), tem-se, pelo raciocínio acima,
c=Bn–1–a. Note-se que –(–(a)) = –(Bn–1–a) = Bn–1–(Bn–1–a) = a.
No caso de bases ímpares, o maior positivo, ao ser trocado de sinal, resulta novamente em si
próprio. Nestes casos, diz-se que houve estouro de representação (veja seção 2.6). Para
bases pares, isto nunca ocorre (para complemento de B-1). A tabela abaixo ilustra diversos
casos de troca de sinal.
Base Num.dig. Número Núm.negado Magnitude
2 4 1110 0001 1
2 4 1001 0110 6
2 4 1010 0101 5
2 4 0101 1010 5
3 3 102 120 11
3 3 111 111 (estouro) 13
3 3 121 101 10
10 2 98 01 1
10 2 99 00 0
10 2 45 54 45
10 2 54 45 45
16 2 01 FE 1
16 2 FF 00 0
16 2 98 67 103
Tabela 2.8 - Exemplos de troca de sinal para números em complemento de B-1
Soma de dois números
Para entender-se o processo de soma de dois números em complemento de (B–1), deve-se
analisar os mesmos casos da soma em sinal magnitude. Na Tabela 2.9 a seguir, deseja-se
realizar a soma d=a+c. Os números a e c estão em complemento de (B–1), e quer-se obter d
também em complemento de (B–1). Note-se que um número x, quando for negativo, está
representado por Bn-1-M(x). As quatro primeiras colunas da esquerda da tabela mostram os
mesmos seis casos da soma em sinal/magnitude, e a coluna da direita ilustra o resultado
obtido pela simples soma dos dois operandos, sem analisar-se seus sinais, suas magnitudes
ou se eles devem na realidade ser somados ou subtraídos (ou seja, simplesmente realiza-se a
soma a+c).
Em todos os casos mostrados na Tabela 2.9, usam-se sempre as mesmas tabelas de soma de
números inteiros (não se utilizam tabelas especiais para soma ou subtração em complemento
de (B–1)). Note-se que em três casos, marcados com (*), não se obtém diretamente o
número já representado em complemento de (B–1); existe um termo excedente de Bn–1. Nos
outros três casos, não marcados, o resultado obtido já está correto.
Para reconhecer facilmente os casos que necessitam de correção, basta observar-se que o
termo Bn corresponde a um dígito na posição (n+1). Como os números representados tem
somente n posições, a posição (n+1) só será ocupada naquelas somas que produzirem um
“vai-um”. Assim, se o termo Bn estiver presente, ele só pode ter sido gerado, na soma, por
um “vai-um”. Ou seja, somente os casos que produzirem um “vai-um” são os que
necessitam de correção. Para eliminar o termo Bn, basta eliminar-se este “vai-um”. E para
eliminar o termo (–1), adiciona-se um ao resultado.
2-8
S(a) S(c) S(d) M(d) Resultado obtido pela
simples soma de a+c
+ + + M(a)+M(c) a+c
– – – M(a)+M(c) Bn-1-M(a) + Bn-1-M(c)
Bn-1+Bn-1-(M(a)+M(c))
Bn-1 + Bn-1 - M(d)
Bn-1 + d (*)
+ – se M(a)‡ M(c), + M(a)–M(c) M(a) + Bn-1-M(c)
Bn-1 + M(a)-M(c)
Bn-1 + d (*)
se M(a)<M(c), – M(c)–M(a) M(a) + Bn-1-M(c)
Bn-1 - (M(c)-M(a))
Bn - 1 - M(d)
d
– + se M(a)>M(c), – M(a)–M(c) Bn-1 - M(a) + M(c)
Bn-1 - (M(a)-M(c))
Bn-1 - M(d)
d
se M(a)£ M(c), + M(c)–M(a) Bn-1 - M(a) + M(c)
Bn-1 + (M(c)-M(a))
Bn-1 + d (*)
Tabela 2.9 - Soma em complemento de B-1
Simplificando, tem-se a seguinte regra de correção: para obter a soma correta em
complemento de (B–1), basta somar o “vai-um” ao resultado (e eliminar o “vai-um”). Ou,
dito de outra maneira, se ocorrer um “vai-um”, deve-se somar um ao resultado para corrigi-
lo. Se não ocorrer “vai-um”, o resultado já está correto. A tabela a seguir ilustra exemplos de
diversas somas, tanto em base 2 (complemento de um) como em base 10 (complemento de
nove).
Base Num.dig. a c d=a+c d corrigido
2 4 1110 0001 1111 1111
2 4 1111 0001 10000 0001
2 4 1001 0111 10000 0001
2 4 0110 1111 10101 0110
2 4 0101 1000 1101 1101
2 4 0011 0011 0110 0110
2 4 1111 1111 11110 1111
2 4 0001 1110 1111 1111
10 2 98 37 135 36
10 2 99 00 99 99
10 2 99 01 100 01
10 2 45 55 100 01
10 2 45 45 90 90
10 2 76 45 121 22
Tabela 2.10 - Exemplos de soma em complemento de B-1
2-9
2 .3 .4 Números com sinal: representação em complemento de B
Para representar números em complemento de B, utiliza-se a fórmula Bn–a. Note-se que, ao
contrário de complemento de (B–1), esta fórmula é aplicada sobre todo o número, e não
sobre os seus algarismos individuais. Desta maneira elimina-se a dupla representação do
zero, e faixa de representação fica:
Faixa de representação, para B par: [ –(Bn/2) , +(Bn/2–1) ]
Faixa de representação, para B ímpar: [ –(Bn–1)/2 , +(Bn–1)/2 ]
Note-se que a gama de representação é dividida em dois subconjuntos, um para números
negativos e outro para positivos. Não existe mais a dupla representação do zero. Observe-se
também que as faixas (considerando-se a representação dos números) continuam as mesmas
da representação em complemento de B–1. Como estes números são agora interpretados em
complemento de B, entretanto, os valores das faixas mudam. A faixa positiva permanece a
mesma, mas a faixa negativa sofre um deslocamento de uma unidade, de forma a eliminar o
zero negativo. A tabela a seguir ilustra as faixas para diversas bases.
BaseNum.dig. Faixa Faixa em decimal
2 4 1000,1001,..,1111,0000,..,0111 –8,–7,..,–1,0,1,..7
3 3 112,120,121,..,222,000,001,..,111 –13,–12,–11,..,–1,0,1,..,13
4 3 200,201,..,333,000,001,..,132,133 –32,–31,..,–1,0,1,..31
8 3 400,401,..,777,000,001,..,376,377 –256,–255,..,–1,0,1,..,255
9 2 45,46,..,88,00,01,..,43,44 –40,–39,..,–1,0,1,..,39,40
10 2 50,51,..,98,99,00,01,..,48,49 –50,–49,..,–2,–1,0,1,..,48,49
Tabela 2.11 - Exemplos de faixas de representação em complemento de B
Na Tabela 2.11, por exemplo, para base decimal com dois dígitos, com números positivos
tem-se a faixa de 0 até 99; com a representação em complemento de 9 obtém-se a faixa de 50
a 99 e 0 a 49. Esta faixa continua a mesma para complemento de 10; e da mesma maneira a
primeira metade (de 50 a 99) representa números negativos; a segunda metade (de 0 a 49)
representa números positivos. Entretanto, agora 99 representa –1 (e não mais zero, como em
complemento de 9) e 50 representa o número –50 (que não tem representação positiva
equivalente!). Ou seja, todos os números negativos sofreram um acréscimo de –1. As
demais propriedades se mantém: um número iniciando por 9, 8, 7, 6 ou 5 é negativo;
iniciando por 0, 1, 2, 3 ou 4 é positivo. Em binário, para 4 dígitos, tem-se a faixa 1000 a
1111 (–8 a –1) e 0000 a 0111 (0 a 7). Números iniciando por 1 são negativos, e iniciando
por 0 são positivos.
Note-se também que agora as bases ímpares tem faixas simétricas, mas que as bases pares
possuem um número negativo a mais, que não tem equivalente positivo dentro da faixa.
Cálculo do valor do número
Um número em complemento de B, tem o seu valor calculado de acordo com os seguintes
passos:
• determinação do sinal: a regra é a mesma de complemento de (B–1): se a
representação do número, interpretado como inteiro positivo, estiver na metade
superior da faixa, ele é negativo. Se estiver na metade inferior da faixa, é positivo. Ou
seja, sendo o número a=S n-1xiBi, se a ‡ Bn/2, então este número em complemento de
B é negativo. Se a<Bn/2, então sua interpretação é de um número positivo. Obs.: para
bases pares, a regra pode ser simplificada: basta analisar o dígito mais significativo,
conforme já foi explicado.
2-10
• determinação da magnitude do número. Se o número a for positivo, então sua
magnitude é dada por M(a)=S n-1xiBi. Se o número a for negativo, para obter seu valor
deve-se calcular o complemento de B do número:
M(a)=Bn–a = Bn – S n-1xiBi
Note-se que Bn-1-a é a representação em complemento de (B–1). Assim, uma maneira rápida
de calcular o complemento de B é realizando o complemento de (B–1) de cada algarismo e a
seguir somar um no número resultante. Ou seja, (Bn–1–a)+1 = Bn–a, que é o número
desejado em complemento de B. A tabela a seguir fornece diversos exemplos.
Base Num.dig. Número Sinal Magnitude Num.decim.
2 4 1110 – 2 –2
2 4 1001 – 7 –7
2 4 1010 – 6 –6
2 4 1000 – 8 –8
2 4 0101 + 5 +5
2 4 0111 + 7 +7
3 3 102 + 11 +11
3 3 111 + 13 +13
3 3 112 – 13 –13
3 3 121 – 11 –11
10 2 98 – 2 –2
10 2 99 – 1 –1
10 3 45 + 45 +45
10 3 54 – 46 –46
10 3 50 – 50 –50
Tabela 2.12 - Exemplos de cálculo do valor de um número em complemento de B
Troca de sinal
Para trocar o sinal de um número a em complemento de B, basta calcular Bn-a. Ou, pelo
raciocínio acima, calcula-se o complemento de (B–1), complementando cada algarismo, e
depois soma-se um. A tabela a seguir ilustra diversos casos de troca de sinal. Note-se que,
para bases pares, a troca de sinal do menor número negativo (de maior magnitude) provoca
estouro de representação, pois este número não tem equivalente positivo. Em bases ímpares
isto não ocorre.
Base Num.dig. Número Núm.negado Magnitude
2 4 1110 0010 2
2 4 1001 0111 7
2 4 1010 0110 6
2 4 0101 1011 5
2 4 1000 1000 (estouro) 8 (–8)
3 3 102 121 11
3 3 111 112 13
3 3 121 102 10
10 2 98 02 2
10 2 99 01 1
10 3 45 55 45
10 3 54 46 46
10 3 50 50 (estouro) 50 (–50)
Tabela 2.13 - Exemplos de troca de sinal para números em complemento de B
2-11
Soma de dois números
O raciocínio é análogo ao utilizado em complemento de (B–1). Deve-se analisar os mesmos
casos da soma em complemento de (B–1) e da soma em sinal magnitude. Na tabela a seguir,
deseja-se calcular d=a+c. Os números a e c estão representados em complemento de B, e
quer-se obter d também em complemento de B.
A tabela é praticamente uma cópia da usada para complemento de (B–1); comparando-se as
duas nota-se que a diferença está na eliminação de todos os termos “–1” (que é justamente a
diferença entre (B–1) e (B). Como no caso de complemento de B-1, tem-se seis casos a
serem analisados. A coluna da direita mostra o resultado obtido se for realizada simplesmente
uma soma dos dois operandos, sem a preocupação de analisar previamente os operandos.
Em todos os casos, usam-se sempre as mesmas tabelas de soma de números inteiros (não se
utilizam tabelas especiais para complemento de B). Note-se que em três casos, marcados
com (*), não se obtém diretamente o número já representado em complemento de B; existe
um termo excedente de Bn. Nos outros três casos, não marcados, o resultado obtido já está
correto.
S(a) S(c) S(d) M(d) d (Soma de a + c)
+ + + M(a)+M(c) a+c
– – – M(a)+M(c) Bn-M(a) + Bn-M(c)
Bn+Bn - (M(a)+M(c))
Bn + Bn - M(d)
Bn + d (*)
+ – se M(a)‡ M(c), + M(a)–M(c) M(a) + Bn-M(c)
Bn + M(a)-M(c)
Bn + d (*)
se M(a)<M(c), – M(c)–M(a) M(a) + Bn-M(c)
Bn - (M(c)-M(a))
Bn - M(d)
d
– + se M(a)>M(c), – M(a)–M(c) Bn - M(a) + M(c)
Bn - (M(a)-M(c))
Bn - M(d)
d
se M(a)£ M(c), + M(c)–M(a) Bn - M(a) + M(c)
Bn + (M(c)-M(a))
Bn + d (*)
Tabela 2.14 - Soma em complemento de B
Os casos a serem corrigidos são identificados da mesma maneira que em complemento de
(B–1). Somente os casos que produzirem um “vai-um” são os que necessitam de correção.
Para eliminar o termo Bn, basta eliminar este “vai-um”; não existe a necessidade de somar
um ao resultado. Para todos os fins práticos, esta “eliminação” é realizada simplesmente
ignorando-se a existência do “vai-um” em um primeiro momento (a ocorrência ou não do
“vai-um” ainda pode influenciar a análise do resultado da soma, mas não a soma
propriamente dita).
A tabela a seguir ilustra exemplos de diversas somas, tanto em base 2 como em base 10,
considerando que os números estão representados em complemento de B.
2-12
Base Num.dig. a c d=a+c d corrigido
2 4 1110 0001 1111 1111
2 4 1001 0111 10000 0000
2 4 1111 0001 10000 0000
2 4 0110 1111 10101 0101
2 4 0101 1000 1101 1101
2 4 0011 0011 0110 0110
2 4 1111 1111 11110 1110
2 4 0001 1110 1111 1111
10 2 98 37 135 35
10 2 99 00 99 99
10 2 99 01 100 00
10 2 45 55 100 00
10 2 45 45 90 90
10 2 76 45 121 21
Tabela 2.15 - Exemplos de soma em complemento de B
2.4 Comparação entre os métodos
Dos quatro métodos estudados nas seções anteriores, dois são amplamente utilizados: o de
representação de números positivos e o de representação em complemento de B. Nestas duas
representações, somas são realizadas através das mesmas tabelas; nenhum procedimento
especial é necessário para somar-se dois números em complemento de dois (exceto a
eventual eliminação do “vai-um”). Os outros dois métodos, de sinal magnitude e de
complemento de (B–1), sofrem da desvantagem de necessitarem de procedimentos mais
complexos para realização da soma, além de apresentarem duas representações para o zero.
Em sistemas atuais, a base é binária e utiliza-se para tratamento de números negativos a
representação em complemento de 2.
A título de comparação, a tabela a seguir mostra a interpretação decimal de números binários
de 4 dígitos nas quatro maneiras analisadas.
Binário Int.positivo sinal mag. compl. de 1 compl. de 2
0000 0 +0 0 0
0001 1 1 1 1
0010 2 2 2 2
0011 3 3 3 3
0100 4 4 4 4
0101 5 5 5 5
0110 6 6 6 6
0111 7 7 7 7
1000 8 –0 –7 –8
1001 9 –1 –6 –7
1010 10 –2 –5 –6
1011 11 –3 –4 –5
1100 12 –4 –3 –4
1101 13 –5 –2 –3
111014 –6 –1 –2
1111 15 –7 –0 –1
Tabela 2.16 - Interpretação de números binários
2-13
2.5 Subtração
A operação de subtração, seja qual for o método de representação utilizado, pode ser
facilmente realizada transformando-a em uma soma:
d = a – c = a + (–c)
Assim, para realizar subtrações, pode-se simplesmente trocar o sinal do subtraendo e somá-
lo ao minuendo. A troca de sinal e a soma seriam então realizadas de acordo com o sistema
de representação utilizado.
A subtração pode, também ser realizada através de tabelas próprias. Neste caso, no lugar de
“vem-um” (carry in), tem-se o “emprestou-um”(borrow in); e no lugar de “vai um” (carry
out) tem-se o “pede-um” (borrow out).
a c d=a-c
0 0 0
0 1 1 e “pede-um”
1 0 1
1 1 0
Tabela 2.17 - Tabela verdade de um meio-subtrator
a c emprestou um d=a–c pede um
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
Tabela 2.18 - Tabela verdade de um subtrator completo
Apesar destas tabelas serem análogas às utilizadas para a soma, a grande maioria dos
computadores não as utiliza; subtrações são realizadas internamente usando-se o método do
complemento do subtraendo.
2.6 Estouro de representação
Os números representados em um computador são limitados. Quanto maior o número de
dígitos disponíveis, maior será a faixa dos números representáveis, mas esta faixa sempre
será finita. Assim, ao realizar-se a soma (ou subtração) de dois números, o resultado pode
cair fora da faixa representável. Nestes casos, diz-se que houve estouro ou transbordamento
da representação (overflow). Para representar corretamente o resultado quando ocorreu
estouro necessitaria-se de um dígito a mais para representar o número.
Por exemplo, para números binários de 4 dígitos, tem-se:
1000 + 0001 = 1001 –8 + 1 = –7 (correto)
1000 + 1111 = 0111 –8 + –1 = 7 (incorreto; deveria ser –9)
0111 + 1111 = 0110 7 + –1 = 6 (correto)
0111 + 0011 = 1010 7 + 3 = –6 (incorreto; deveria ser 10)
Note-se que o estouro não está diretamente relacionado com o “vai-um”. Os exemplos acima
ilustram isto. No primeiro caso, não ocorreu nem estouro nem “vai-um”; no segundo caso
2-14
ocorreram tanto estouro como “vai-um”; no terceiro caso ocorreu “vai-um”, mas não estouro;
e no quarto caso não ocorreu “vai-um”, mas ocorreu estouro.
Existe uma regra simples para determinação de estouro em complemento de 2: ocorre estouro
quando o “vai-um” do dígito mais significativo é diferente do “vem-um” para este mesmo
dígito. Note-se que o dígito mais significativo é o utilizado para indicar o sinal do número.
Esta é a maneira como os computadores internamente calculam se o resultado “estourou” ou
não.
Uma outra maneira, que não necessita da análise dos “vai-um” e “vem-um”, utiliza somente
os dígitos mais significativos dos dois operandos e do resultado, ou seja, analisam-se os
sinais dos operandos e do resultado. Esta análise está resumida na tabela a seguir (seja
d=a+c).
Sinal de a Sinal de c Sinal obtido para d Sinal real de d Estouro
+ + + + Não
+ + – + Sim
– – – – Não
– – + – Sim
+ – +/– +/– Nunca ocorre
– + –/+ –/+ Nunca ocorre
Tabela 2.19 - Análise dos casos de estouro de representação
Pela tabela, pode-se observar que:
• se os dois operandos tiverem sinais diferentes, nunca ocorre estouro (a representação
do resultado sempre estará dentro da faixa).
• somente ocorre estouro quando os dois operandos tiverem sinais iguais, e este sinal é
diferente do sinal obtido para o resultado. Ou seja, quando somando-se dois números
positivos obtém-se um resultado negativo, e quando somando-se dois números
negativos obtém-se um número positivo. Nestas duas situações, o sinal do resultado
está obviamente incorreto, e esta é uma indicação clara que ocorreu estouro de
representação.
Assim, em uma soma, ocorre estouro quando S(a)=S(c) e S(a) „ S(d). Analogamente, em
uma subtração ocorre estouro quando S(a)„ S(c) e S(a)„ S(d).
2.7 Exercícios propostos
1. Qual o valor decimal de 011011012? Qual a representação binária de 654?
2. Converter para binário os seguintes números decimais:
(a) 39 (b) 0,4475 (c) 256,75 (d) 129,5625
3. Converter para decimal os seguintes números binários:
(a) 01101 (b) 0,001101 (c) 0111011,1011 (d) 010110011
4. Quantos números diferentes podem ser representados em uma palavra binária de 6 bits?
5. Quantos números diferentes podem ser representados em um conjunto de 4 chaves, cada
uma com três posições diferentes?
6. Escrever os 12 primeiros números no sistema de numeração de base 5.
2-15
7. Escrever os 26 primeiros números no sistema de numeração de base 12. Usar a letra A
para o decimal 10 e a letra B para o decimal 11.
8. Representar o número 12,1 em binário de dez bits, com 5 bits de parte inteira e 5 bits de
parte fracionária.
9. Represente o número –4710 usando representações binárias de 8 bits em (a) sinal e
magnitude, (b) complemento de um e (c) complemento de dois.
10. Converter os seguintes números hexadecimais em decimais:
(a) B6C7 (b) D2763 (c) 9,1A
11. Converter os seguintes números octais em binário:
(a) 56 (b) 32,234 (c) 231,2 (d) 3364
12. Converter os seguintes números hexadecimais em binários:
(a) AB2 (b) 12,A (c) 649 (d) 0,D19
13. Converter os seguintes números binários em hexadecimais:
(a) 010110111 (b) 011110,01011 (c) 01110100010101
14. Considerando um processador que opere com a base quaternária utilizando 5 bits.
14.1 Para números inteiros positivos:
a) Quantos números diferentes podem ser representados? (Fórmula de cálculo e valor
decimal)
b) Quais são os limites inferior e superior desta faixa? (Valor quaternário e decimal
correspondente)
c) Como seria representado o número 126 neste sistema?
14. 2 Supondo que se queira representar os números inteiros com sinal, usando sinal e
magnitude:
a) Quantos números diferentes podem ser representados? (Fórmula de cálculo e valor
decimal)
b) Quais são os limites inferior e superior desta faixa? (Valor quaternário e decimal
correspondente)
c) Como seria representado o número 126 neste sistema?
d) Como seria representado o número -126 neste sistema?
14.3 Agora supondo que se quer representar estes números usando complemento de B-1:
a) Quantos números diferentes podem ser representados? (Fórmula de cálculo e valor
decimal)
b) Quais são os limites inferior e superior desta faixa? (Valor quaternário e decimal
correspondente)
c) Como seria representado o número 126 neste sistema?
d) Como seria representado o número -126 neste sistema?
14.4 Agora supondo que se quer representar estes números usando complemento de B:
a) Quantos números diferentes podem ser representados? (Fórmula de cálculo e valor
decimal)
b) Quais são os limites inferior e superior desta faixa? (Valor quaternário e decimal
correspondente)
c) Como seria representado o número 126 neste sistema?
d) Como seria representado o número -126 neste sistema?
15. Considere os pares de números binários de 6 bits indicados abaixo. Efetue a operação de
soma entre eles supondo, independentemente, que:
1) os números estão representados em sinal e magnitude;
2) os números estão representados em complemento de um;
2-16
3) os números estão representados em complemento de dois.
Para cada caso, interprete o resultado, isto é, determine qual é o seu valor numérico e indique
se este valor é o resultado correto da operação para a forma de representação sugerida.
(a) 010101 e 110110 (b) 010101 e 010110 (c) 110101 e 110110
16. Efetuar as seguintes subtrações em um sistema decimal de 4 dígitos, utilizando uma vez
complemento de 9 e outra vez complemento de 10:
(a) 1024–913 (b) 249–137 (c) 119–239
17. Repetir o exercício 16, agora para um sistema binário de 12 bits, uma vez utilizando
complemento de um e outra vez com complemento de dois.
18. Efetuar as operações indicadas abaixo (em decimal) em um sistema binário de 10 bits,
com notação em complemento dedois. Analise o resultado, indicando a eventual existência
de estouro de representação:
(a) 475 + 128 (b) - 506 + -6 (c) 436 – 475
(d) 506 + 6 (e) 128 – 128 (f) - 475 + 511
19. Converta os números 17 e 15 para binário usando 6 bits e efetue a operação de soma
entre eles (17+15), usando as seguintes representações:
a) sinal magnitude;
b) complemento de um;
c) complemento de dois.
Analise os resultados obtidos quanto à correção (sem calcular o seu valor correspondente em
decimal).
20. Repita o exercício 19 para os números 13 e 8.
21. Repita o exercício 19 para os números -17 e -15 (realizando a soma -17+(-15)).
22. Mostre como somar em complemento de um, para n=6 bits, as seguintes parcelas
decimais:
(a) 27 e –7 (b) 27 e 8 (c) 1 e 5
23. Repetir o exercício 23, com as parcelas codificadas em complemento de dois, também
para 6 bits.
24. Usando a técnica de subtrair através de complemento do subtraendo, mostrar como obter
as seguintes diferenças em binário, 6 bits, complemento de um:
(a) 8 – 7 (b) -16 – 16 (c) 15 – 24
25. Repetir o exercício 25 para complemento de dois em 6 bits.
26. Repetir o exercício 25 para sinal / magnitude.
27. Converta os seguintes números para binário, usando a representação destinada a inteiros
positivos, usando o número necessário de bits e efetue a subtrações indicadas usando a
tabela de subtração:
(a) 32 - 15 (b) 31 - 14 (c) 17 - 9
28. Supondo um sistema decimal, com 4 dígitos, que trabalhe com representação de
negativos em complemento de 9, mostre como realizar as operações:
(a) 0136 + 7654 (b) 9998 + 7777 (c) 0010 – 0108
29. Repetir o exercício 28 para representação em complemento de 10.
3-1
Capítulo
TRÊS
Componentes do computador e modelo de von Neumann
3.1 Breve histórico
Uma das mais importantes investidas na área computacional, e que merece registro histórico,
foi a do inglês Charles Babbage. Ele projetou dois computadores: Difference Engine
(denominado a seguir “Dispositivo Diferencial”), iniciado em 1823, e o Analytical Engine
(“Dispositivo Analítico”), concebido em 1834, tendo ambos representado grandes avanços
científicos em sua época, embora nenhuma deles tenha sido concluído. O objetivo do
Dispositivo Diferencial era o cômputo automático de tabelas matemáticas. Sua única operação
era a adição, mas a máquina podia resolver grande número de funções úteis pela técnica de
diferenças finitas. Esta máquina foi projetada para polinômios de grau 6 e números binários
de 20 dígitos, mas não foi concluída devido a problemas de inadequação da tecnologia
mecânica disponível. Outra tentativa de Babbage, foi a construção do Dispositivo Analítico,
que deveria realizar qualquer operação matemática automaticamente. Esta máquina já tinha
módulos de armazenamento (memória) e uma unidade operadora (realizando 4 operações
aritméticas). A entrada e saída de dados era feita através de cartões perfurados. Esta máquina
permitia a alteração da seqüência dos comandos executados, dependendo do resultado de
testes realizados. Novamente por problemas técnicos, a construção desta máquina não
chegou ao final. Na tabela a seguir estão reunidas algumas das principais tentativas de valor
histórico no âmbito computacional.
Data Inventor:máquina Capacidade Inovações técnicas
1642 Pascal adição, subtração transferência automática de vai-um;
representação em complemento
1671 Leibnitz adição, subtração,
multipl., divisão
mecanismo para multiplicação
e divisão
1827 Babbage:
Difference Engine
avaliação polinomial
por diferenças finitas
operação automática
com diversos passos
1834 Babbage:
Analytical Engine
computador de
propósitos gerais
mecanismo automático de controle
de sequência (programa)
1941 Zuse: Z3 computador de
propósitos gerais
primeiros computadores de
propósitos gerais operacionais
1944 Aiken:
Harward Mark I
computador de
propósitos gerais
primeiros computadores de
propósitos gerais operacionais
Tabela 3.1 - Principais avanços na computação
Uma das primeiras tentativas para construção de computadores eletrônicos foi feita por volta
de 1930 por John Atanasoff, na Universidade Estadual de Iowa. Era uma máquina
construída com base em válvulas para resolução de equações lineares.
O primeiro computador eletrônico de propósitos gerais foi provavelmente o ENIAC
(Eletronic Numerical Integrator and Calculator), construído entre 1943 e 1946, na
Universidade da Pensilvânia, sob a coordenação de J. Mauchly e J. P. Eckert. Analogamente
à primeira máquina de Babbage, parte da motivação do ENIAC foi a necessidade de construir
tabelas de forma automática, por interesse do sistema militar americano (tabelas balísticas).
Fisicamente, era uma máquina enorme que pesava 30 toneladas e empregava cerca de 18000
3-2
válvulas. Para se ter uma idéia do tempo de execução nesta máquina, eram necessários cerca
de 3 ms para realização de uma multiplicação de 10 dígitos (decimais), o que se constituiu em
grande avanço para a época. Ele trabalhava preponderantemente com valores decimais e não
binários. Na Figura 3.1 é mostrada a estrutura básica do ENIAC.
Com o avanço da pesquisa e o conseqüente desenvolvimento tecnológico, houve grandes
modificações nos computadores. Basicamente, ao longo do tempo, a tecnologia e os estilos
usados na construção de computadores apresentam pontos comuns, que nos permitem
classificá-los em gerações. Na tabela a seguir, são apresentadas as gerações de computadores
de acordo com sua classificação histórica.
Geração Tecnologias Característica de
hardware
Característica de
software
Exemplo
1a
(1946 -
54)
Válvulas,
memória de tubos
catódicos
aritmética de
ponto fixo
linguagem de
máquina, linguagem
assembler
IAS,
UNIVAC
2a
(1955 -
64)
Transistores, núcleos
de ferrite, discos
magnéticos
ponto flutuante
registrador índice
processadores E/S
ling. alto-nível
bibliot. de subrotinas
monitores batch
IBM7094
CDC1604
3a
(1965 -
74)
Circuitos integrados
(SSI e MSI)
microprogramação
pipeline
memória cache
multiprogramação
multiprocessamento
sistema operacional
memória virtual
IBM
S/360;
DEC
PDP-8
4a
(1975 -
 ?)
Circuitos LSI
memórias
semicondutoras
Amdahl
470;
Intel 8748
Tabela 3.2 - Gerações de computadores
Atualmente, esta tabela [HAY78] já poderia ser completada com uma quinta geração que
incluiria as máquinas maciçamente paralelas, os circuitos VLSI, as máquinas “data-flow”,
etc, dependendo do parâmetro escolhido para embasar esta evolução.
multiplicador
divisor 
e raiz
quadrada
tabelas de
funções
a
c
u
m
u
l.
unidade mestre de
programação
leitora de
cartões
impressora e
perf. de cartões
Figura 3.1 - Estrutura básica do ENIAC
3-3
3.2 Princípios básicos
Cada computador tem um conjunto de operações e convenções único para determinar as
posições dos dados com os quais a operação será realizada. Os vários computadores diferem
nas operações específicas que fornecem e nos métodos que eles usam para referenciar dados
que serão manipulados por uma operação. Em geral, uma operação tem a forma
OPERAÇÃO OPERANDOS
e é denominada de instrução. OPERAÇÃO especifica a função que será desempenhada.
OPERANDOS fornece a maneira de calcular a posição atual dos dados com os quais a
operação será realizada.
Um programa é constituído de uma seqüência pré-determinada de instruções, que deve ser
seguida para que seja atingido o objetivo computacional. Este programa e os dados
correspondentes estão armazenados na memória da máquina; o conjunto de instruções (ou
programa) deve ser interpretado para realização do processamento, isto é, a informação
codificada correspondente às ações e operandos deve ser entendida e então processada.
A memória de um sistema de computador tem a função de armazenar dados e instruções; é
organizada em posições, que podemser visualizadas como elementos em uma matriz. Cada
elemento tem um endereço. Assim, pode-se falar de uma memória que tenha x posições:
cada posição pode ser referenciada diretamente de acordo com a sua colocação na seqüência.
Por exemplo, se uma memória tem 4096 posições, existem posições de memória 0, 1, 2,
3,...., 4094 e 4095. Quando um destes números aparece nos circuitos de controle
conectados à memória, o conteúdo (o valor que está na posição) será trazido da memória para
os circuitos da unidade de processamento ou a informação na unidade de processamento será
armazenada na memória, dependendo do trabalho associado com o endereço.
Instruções em um computador são executadas em uma seqüência determinada por suas
posições de memória. Na maioria dos computadores (que formam a classe das chamadas
máquinas de von Neumann, cujo modelo básico será visto na seção 3.5), instruções e dados
são distribuídos em posições de memória.
O endereço representa uma posição particular na memória e pode ser formado de várias
maneiras. A representação trivial de um endereço está na parte de uma instrução chamada
campo de endereço. Contudo, há várias maneiras de se modificar um campo de endereço por
valores em outras partes do processador (aritmética de endereços). As diversas
possibilidades e vantagens destas técnicas serão mostradas mais adiante na disciplina.
A unidade lógica e aritmética realiza ações indicadas nas instruções, executando operações
numéricas (aritméticas) e não numéricas (lógicas) além da preparação de informações para
desvios do programa. O controle do programa e a unidade lógica e aritmética formam a
unidade central de processamento (UCP), ou simplesmente processador.
Busca - decodificação - execução de instruções
Um elemento no processador, denominado de contador de instruções ou apontador de
instruções, contém a posição da próxima instrução a ser executada. Quando uma seqüência
de execução de instruções tem início, a instrução cujo endereço está no contador de
instruções é trazida da memória para uma área de armazenamento chamada registrador de
instrução. Este processo consiste na busca de instrução.
A instrução é interpretada por circuitos de decodificação que fazem com que sinais
eletrônicos sejam gerados no processador como resultado do valor do campo de operação,
isto é, decodificam a informação correspondente à operação a ser realizada.
Esses sinais, ou seqüência de sinais, resultam na execução da instrução. Execução é a
aplicação da função do operador nos operandos. Quando a execução de uma instrução é
3-4
terminada, o contador de instruções é atualizado para o endereço de memória da próxima
instrução. Esta instrução é então trazida da memória para o registrador de instruções e
executada, repetindo-se assim o ciclo de busca-decodificação-execução.
A seqüência de instruções pode mudar como resultado de uma instrução que direciona um
desvio (também chamada transferência ou salto). Estas instruções contêm o endereço da
próxima instrução a ser executada ao invés do endereço de um operando. Elas causam
mudanças no fluxo do programa como resultados das condições nos dados. O desvio
condicional representado por uma estrutura de programação de alto nível de IF (teste para
uma condição especificada e alteração do fluxo de programa se a condição é atendida) traduz-
se em algum tipo de instrução de desvio.
3.3 Elementos funcionais básicos
Um computador é composto por blocos convencionalmente chamados de memória, unidades
operacionais, unidades de controle e dispositivos de entrada e saída (Figura 3.2).
A unidade operacional e a unidade de controle tem funcionalidade específica, conforme será
visto na seqüência. Reunidas, entretanto, recebem no seu conjunto a denominação de
unidade central de processamento (UCP) ou processador. Memórias, unidades operacionais,
unidades de controle e dispositivos de entrada e saída são formados por elementos de menor
complexidade, tais como registradores, contadores, multiplexadores, seletores,
decodificadores, somadores e portas lógicas (AND, OR, INVERSOR).
Registradores são elementos digitais com capacidade de armazenar dados. Têm associados a
si sinais de carga, que determinam quando serão armazenados novos conteúdos nestes
elementos; ao ser acionado este sinal (carga), o registrador copia para si o dado que está em
suas linhas de entrada. Contadores, multiplexadores, seletores, decodificadores, somadores
e portas lógicas são elementos com capacidade de operar sobre dados, alterando-os ou
fornecendo um novo dado como resultado da operação que realizam. Elementos digitais
necessitam ser ativados ou habilitados para realizar uma determinada operação. Os sinais
responsáveis pela ativação ou habilitação de componentes digitais são conhecidos como
sinais de controle.
controle unidadeoperacional
memória
entrada/
saída
Figura 3.2 - Elementos básicos de um computador
Dados são transferidos, entre os diversos elementos de um computador, por caminhos
físicos chamados barramentos. Barramentos são caminhos físicos que permitem o
transporte de dados entre os vários elementos da parte operacional, memória e sistema de
3-5
entrada e saída. Um barramento só pode receber dados de uma fonte de cada vez. Do ponto
de vista de arquitetura, um barramento se caracteriza pela sua largura em bits. A largura em
bits do barramento deve corresponder ao comprimento dos elementos (dados, endereço,
controle) que são por ele transportados.
Cada um dos blocos básicos do computador é comentado, em detalhes, a seguir.
3 .3 .1 Memória
A memória é formada por elementos armazenadores de informação. Uma memória está
dividida em palavras. Cada palavra ocupa uma posição de memória e é identificada
univocamente por um endereço. O conteúdo armazenado nas palavras da memória tanto
pode representar dados como instruções. Um esquema da estrutura convencional para a
memória de um computador é mostrado na Figura 3.3.
memória
RDM out
RDM in
R
E
M
read
write
Figura 3.3 - Modelo estrutural da memória
Os registradores mostrados na Figura 3.3 são:
REM: registrador de endereços da memória - contém o endereço do
dado a ser lido ou escrito na memória.
RDMi n : registrador de dados da memória (entrada) - contém o dado
a ser escrito na memória.
RDMout: registrador de dados da memória (saída) - contém o dado
lido da memória.
Os sinais de controle significam:
read: leitura da memória - o conteúdo da posição de memória
endereçada por REM é copiada em RDMout.
write: escrita na memória - a posição de memória endereçada por REM
recebe o conteúdo de RDMin.
Uma memória é caracterizada por vários parâmetros. Os mais importantes são: tamanho,
velocidade e tecnologia. No nível de arquitetura, interessam: tamanho da palavra em bits e
tamanho da memória em palavras. Estes tamanhos geralmente são indicados sob a forma de
potências de dois. O tamanho da palavra determina o comprimento em bits do RDM
(registrador de dados) e o tamanho da memória o comprimento em bits do REM (registrador
de endereços).
3-6
3 .3 .2 Unidade operacional
A unidade operacional, também chamada de bloco operacional, executa as transformações
sobre dados especificadas pelas instruções de um computador. Compõe-se basicamente de
uma unidade lógica e aritmética, de registradores de uso geral e específico e dos barramentos
que interligam todos esses elementos.
O número, tamanho e uso dos registradores e a quantidade e tipo de operações que a unidade
lógica e aritmética realiza são alguns dos fatores que determinam o porte de um processador.
Unidade lógica e aritmética (ULA)
A ULA realiza operações aritméticas e operações lógicas sobre um ou mais operandos.
Exemplos de operações realizadas pela ULA: soma de dois operandos;
 
negação de um
operando; inversão de um operando; AND (“E” lógico) de dois operandos; OR (“OU” lógico)
de dois operandos; deslocamento

Outros materiais