Fundamentos da Computação
LFG-TI
Um sistema analógico contém dispositivos que manipulam
quantidades físicas que são repressentadas na forma
analógica. Em sistemas analógicos, as quantidaddes físicas
podem variar ao longo de uma faixa continua de valores.
Por exemplo, as quantidades físicas podem variar ao longo
de uma faixa continua de valores. Por exemplo, a
amplitude do sinal de saída de um alto-falante em um
receptor de rádio pode apresentar qualquer valor entre
zero e o seu valor máximo (limite). Outros sistemas
analógicos comuns são amplificadores de áudio,
equipamentos de gravação/reprodução de fita magnética e
um simples reguladore de luminosidade (dimmer).
Apostila de Informática
I.
Fundamentos de computação
1.1.
Introdução
A Informática atua em todas as áreas do conhecimento
humano. A sua utilização passou a ser um diferencial para
pessoas e empresas, visto que, o controle da informação
passou a ser algo essencial para se obter maior
flexibilidade no mercado. Assim, o profissional, que
melhor integrar sua área de atuação com a informática,
atingirá, com mais rapidez, os seus objetivos e,
conseqüentemente, o seu sucesso.
Então o que vem a ser um computador? É um sistema
constituído por HARDWARE , SOFTWARE e
PEOPLEWARE.
O que é um computador digital?
Um computador digital é uma combinação de dispositivos
e circuitos digitais que podem realizar uma seqüência
programada de operações com mínima intervenção
humana. A seqüência de operações é chmada de
programa. O programa é um conjunto de instruções
codificadas que é armazenado na memória interna do
computador juntamente com todos os dados de que o
programa necessita. Quando o computador é comandado a
executar o programa, ele executa as instruções na ordem
em que foram armazenadas na memória até que o
programa termine. Ele faz isso em uma velocidade
extremamente alta.
HADWARE – Parte física
COMPUTADOR
SOFTWARE – Parte lógica
PEOPLEWARE - Usuário
1.2.
A
evolução
dos
Computadores
Eletrônicos.
Os computadores eletrônicos evoluíram baseados
em quatro gerações assim descritas:
1ª Geração(1951 – 1958) – Tinham como característica
principal o uso de válvulas, alto consumo de energia e
tamanho aproximado de 140m2 , geravam uma grande
quantidade de calor.
2ª Geração(1959 – 1965) – Tinham como característica
principal o uso de transistores, elemento que revolucionou
o mundo da eletrônica, dando aos computadores mais
rapidez e um tamanho bem menor que a geração anterior.
3ª Geração(1965 – 1969) – Tinham como característica
principal o tamanho reduzido para médio e pequeno porte,
ainda com o lançamento do IBM/360 esses computadores
passaram a possuir a tecnologia dos circuitos integrados
no seu modo primário.
4ª Geração(1970 até os dias atuais) – Característica
principal: domínio da tecnologia dos Circuitos Integrados
(semicondutores a silício) CHIP VLSI. Os processadores
atuais utilizam de 22 a 30 milhões de transistores
integrados na pastilha de silício.
II.
Como os computadores “pensam”?
Computadores não pensam! O programador do
computador fornece um programa de instruções e de
dados que especificam cada detalhe sobre o que fazer e
quando fazer. O computdor é simplesmente uma máquina
de alta velocidade que pode manipular dados, resolver
problemas e tomar decisões, tudo isso sob o controle de
um programa. Se o programador cometer um erro no
programa ou entrar com os dados errados, o computador
produzirá resultados incorretos. Um ditado popular na
computação diz “lixo na entrada – lixo na saída”.
A organização básica de um computador.
A organização básica de um computador consiste em
máquinas que podem ser divididas em até seis níveis. O
esquema abaixo mostra cada um dos níveis e o estado de
cada nível em relação a atuação de cada nível.
Começando pelo nível 0, na parte mais baixa do esquema
temos ai o hardware da máquina. Abaixo desse nível ainda
poderíamos falar do circuito eletrônico propriamente dito,
mas isso não pertence ao escopo dos concursos para
analistas de sistemas e sim para engenheiros eletricistas
que precisam saber o a constituição física do transistor
entre outras coisas. Dos padrões que frequentemente
aparecem em concursos para analistas de sistemas o nível
mais baixo que estudaremos será o da lógica digital, nível
0, onde são encontradas as portas (AND, OR, NOT, XOR)
aquelas que possuem entradas binárias, e são compostas
de transistores formando as portas. As portas podem
formar, por exemplo, as memórias de 1 bit e que
conjulgadas formam os registradores.
Cada um dos seis níveis podem assim serem descritos:
Organização e Arquitetura de
Computadores
Sistemas Analógicos e Digitais.
Um sistema digital é uma combinação de dispositivos
projetados para manipular informação lógica ou
quantridades físicas que são representadas no formato
digital; ou seja, assim as quantidades podem assumir
apenas valores dicretos. Esses dispositivos são na maioria
das vezes eletrônicos, mas podem, tambe, ser mecânicos,
magnéticos ou pneumáticos. Alguns dos sistemas digitais
mais conhecidos são s computdores digitais e as
calculadoras, os equipamentos digitais de áudio e vídeo e
o sistema de telefonia (o maior sistema digital do mundo).
www.concursosdeti.com.br
Prof. Bruno Guilhen
1
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
Prof. Bruno Guilhen
Nível 0 – NÍVEL LÓGICO DIGITAL
 É considerado o hardware do computador sendo
formado pelos circuitos eletrônicos (transistores),
UCP, memória, disposistovos de E/S,
dispositivos de comunicação e interfaces.
 Serve para executar as microinstruções do nível
1.
do firmware, bem como, flexibilizar e possibitar
o desenvolvimento de instruções mais potentes
em nível de máquina convencional.
A seguir é possível acompanhar o esquema de um
compudor dividido em seis níveis.
Nível 1 – NÍVEL DE MICROARQUITETURA
 Nesse nível os registradores formam a memória
local e um circuito denominado ALU (Unidade
Lógica e Aritmética) que é capaz de operações
aritméticas simples.
 É o verdadeiro nível de linguagem de máquina. O
microprograma,
residente
em
memória
permanente (ROM), compõe o que é conhecido
por firmware em tem por função interpretar e
traduzir as instruções que lhe são submetidas
pelos níveis superiores.
 Nem todas as máquinas possuem este nível como
é o caso das máquinas RISC.
 Algumas
vantagens
do
nível
de
microprogramação sãode falicitar o projeto e a
construção dos circuitos digitais, através da
implementação de parte da lógica digital dentro
Tradução (compilador)
Nível de linguagem de montagem (Assembly)
Nível 5
Nível 4
Nível 3
Nível 2
Nível 1
Nível 0
Nível de linguagem orientado a problemas
Tradução (assembler)
Nível do Sistema Operacional da máquina
Interpretação parcial (S.O.)
Nível de Arquitetura de conjunto de
Instruções
Interpretação (microprograma)
Nível de Microarquitetura
Hardware
Nível lógico digital
MEMÓRIA
CENTRAL
( RAM / ROM)
PERIFÉRICOS
DE ENTRADA
U.C.P.
(U.L.A. / U.C./REG)
PERIFÉRICOS
DE
SAIDA
M E M Ó R IA
SE C U N D Á R IA
Figura 1 – Organização básica de um computador
temporário para os dados dentro do CPU sem necessidade
Todos os computadores contêm cinco elementos ou unidades
de acessar a memória externa.
essenciais: a unidade lógica e aritmética (ULA ou ALU), a
unidade de memória, a unidade de controle, a unidade de
entrada e a unidade de saída. A interconexão básica dessas
III.
Sistema de Numeração e Codificação
unidades é mostrada na figura 1. As setas indicam a direção
Infelizmente, o sistema de numeração decimal não é
na qual os dados, as informações ou os sinais de controle
conveniente para ser implementado em sistemas digitais.
estão fluindo.
Por exemplo, é muito difícil projetar um equipamento
Na figura 1, a ULA e a unidade de controle são mostradas
eletrônico para que ele opere com dez níveis de tensão
combinadas em uma unidade denominada Unidade Central
diferentes (cada um representando um caractere decimal, 0
de Processamento (UCP ou CPU). Isso é feito para separar
a 9). Por outro lado, é muito fácil projetar um circuito
o “cérebro” real do processador das outras unidades. Em um
eletrônico simples e preciso que opere com apenas dois
microprocessador, a CPU usualmente é implementada em
níveis de tensão. Por esse motivo, quase todos os sistemas
um único chip, o microprocessador. A CPU também tem um
digitais usam o sistema de numeração binário (base 2)
conjunto de registradores que realiza funções especiais.
como sistema básico de numeração para suas operações,
Esses registradores também possibilitam o armazenamento
www.concursosdeti.com.br
2
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
embora outros sistemas de numeração sejam, muitas vezes,
usados juntamente com o sistema binário.
No sistema binário há apenas dois símbolos ou valores
possíveis para os dígitos: 0 e 1, esse ssutena de base e
também pode ser usado para representar qualquer quantidade
que possa ser representada em decimal ou em qualquer outro
sistema de numeração. Entretanto, é comum que o sistema
binário use um numero maior de dígitos para expressar um
determinado valor.
No sistema binário, o termo digito binário (binary digit) é
quase sermpre abreviado com o uso do termo bit, o qual será
usado a partir de então.
índice indicando a base em que está representado. Tem-se
portanto, a seguinte equivalência:
101002 = 248 = 2010 = 1416
Teorema da Representação por Base
Seja k qualquer inteiro maior que 1 (lembre que a palavra
inteiro é usada apenas para números representados na base
decimal). Então, para cada inteiro positivo n, existe uma
representação (a prova deste teorema você encontra em
qualquer bom livro de teoria numérica, como por exemplo,
o de George E. Andrews).
n = a0ks + a1ks-1 + ... + as
onde a0>0 e cada ai é um inteiro não negativo maior que k.
Esta representação de n é unica e é chamada de
representação de n na base k. Exemplos:
O Byte
A maioria dos microcomputaodres manipula e armazena
informações e dados binários em grupos de 8 bits, de modo
que uma seqüência de 8 bits recebe um nome especial: ela é
denominada byte. Um byte é constituído sempre de 8 bits e
pode representar quaisquer tipos de dados ou informações.
Como o computador utiliza dezenas, centenas e até bilhões
de bytes, utiliza-se certas unidades de medida em bytes,
como:
1 Kilobyte = 1 KB
1 Megabyte = 1MB
1 Gigabyte = 1GB
1 Terabyte = 1TB
1 Petabyte = 1PB
1 Exabyte = 1EB
1210 = 1.101 + 2.100 = 1210
1710 = 1.161 + 1.160 = 1116
1210 = 1.23 + 1.22 + 0.21 + 0.20 = 11002
1210 = 1.81 + 4.80
Nos próximos capítulos esse assunto de mudança de base
será melhor abordado.
210 = 1.024 bytes (aprox.
mil bytes)
220 = 1024 KB (aprox. 1
milhão de bytes)
230 B= 1.024 MB (aprox. 1
bilhão de bytes)
240 B= 1.024 GB (aprox. 1
trilhão de bytes)
250 B = 1024 TB
260B = 1024 PB
Conversão entre Diferentes Bases
As bases octal e hexadecimal também são muito úteis em
computação. A base octal é representada com 8 dígitos que
variam entre 0 e 7. A base hexadecimal é composta por
dígitos e letras da seguinte forma: 0 a 9 e as letras a, b, c, d,
e e f. A seguir será trabalhado os principais métodos de
conversão em base. Lembre-se de que precisamos de 3 ou 4
dígitos binários para a mudança de base octal e
hexadecimal, respectivamente.
Sistema de numeração binário
O sistema de numeração binário é o mais importante
sistema de numeração em sistemas digitais, é um sistema
posicional em que cada digito (bit) possui um certo peso de
acordo com a posição relativa do bit menos significativo
(LSB).
Base de um Sistema de Numeração
Como se sabe, em Eletrônica e Computação, as bases mais
utilizadas para sistemas de numeração são:
 Binária (Base 2)
 Octal (Base 8)
 Decimal (Base 10)
 Hexadecimal (Base 16)
Uma relação entre elas pode ser visualizada na tabela a
seguir
Binária Octal Decimal Hexadecimal
00000
00
00
00
00001
01
01
01
00010
02
02
02
00011
03
03
03
00100
04
04
04
00101
05
05
05
00110
06
06
06
00111
07
07
07
01000
10
08
08
01001
11
09
09
01010
12
10
0A
01011
13
11
0B
01100
14
12
0C
01101
15
13
0D
01110
16
14
0E
01111
17
15
0F
De acordo com a tabela acima, o número decimal 20 é
representado por 2010, isto é, escreve-se o número e um
www.concursosdeti.com.br
Prof. Bruno Guilhen
Binário para Decimal
1001101(2) = 1x26+0x25+0x24+1x23+1x22+0x21+1x20
= 64 + 0 + 0 + 8 + 4 + 0 + 1
1100101(2) = 77(10)
Decimal para Binário
Há duas maneiras de converter um número decimal inteiro
para seu equivalente no sistema binário. O primeiro método
é quando o número decimal é simplesmente expresso como
uma soma de potências de 2, e os bits 1s e 0s são colocados
nos locais apropriados. Exemplo:
45(10) = 32 + 8 + 4 + 1 = 25 + 0 + 23 + 22 + 0 + 20
= 1 0 1 1 0 1(2)
45(10) = 101101(2)
Observe que um bit 0 é colocado nas posições 21 e 24, visto
que, todas as posições têm de ser consideradas.
Um outro exemplo de conversão de decimal para binário é
o método de divisões sucessivas por 2. Nesse método
executa-se a divisão sucessiva pelo decimal 2 até achar um
quociente 0, achando zero no quociente pega-se os restos
3
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
Prof. Bruno Guilhen
O sistema de numeração hexadecimal usa a base 16. Assim,
ele tem 16 símbolos. Vale lembrar que cada dígito
hexadecimal é representado por um grupo de 4 digitos
binários. E os dígitos hexadecimais de A até F são
equivalentes aos valores decimais de 10 até 15.
dessa divisão (que sempre é 0 ou 1) pegando da direita para
a esquerda (será escrito de modo inverso) onde o primeiro
binário ( o mais significativo, aquele que fica mais a
esquerda) será o último resto.
Por exemplo, o número 25 na base decimal quando
convertido em binário por esse método fica:
Conversão de hexadecimal para decimal
Um número hexadecimal pode ser convertido para seu
equivalente decimal devido ao fato de que a posição de
cada digito hexa tem um peso que é uma potência de 16. De
acordo com os mesmos métodos utilizados anteriormente.
Veja um exemplo de conversão do número 356 da base
hexadecimal para a base decimal.
25
 12 + o resto 1
2
12
 6 + o resto 0
2
6
 3 + o resto 0
2
3
 1 + o resto 1
2
1
 0 + o resto 1
2
356(16) = 3 x 162 + 5 x 161 + 6 x 160
356(16) = 854(10)
2AF(16)= 2 x 162 + 10 x 161 + 15 x 160
2AF(16) = 687(10)
25(10) = 1
1
0
0
Conversão de decimal para hexadecimal
Nesse caso o método de divisões sucessivas será usado
novamente, só que neste caso essa divisão será por 16. Veja
a conversão do decimal 42310 para Hexadecimal.
1(2)
Usando N bits, pode-se representar números decimais na
faixa de 0 a 2N – 1, em um total de 2N números diferentes.
423
 26 + o resto 7
16
26
 1 + o resto 10
16
1
 0 + o resto 1
16
Sistema de numeração Octal.
O sistema de numeração octal é muitas vezes utilizado no
trabalho com computadores digitais. O sistema octal tem
base oito, o que significa que ele tem oito dígitos possíveis:
0, 1, 2, 3, 4, 5, 6, 7, 8. Assim cada dígito de um número octal
pode ter qualquer valor de 0 a 7.
423(10) = 1
Conversão de octal para decimal
0
Código ASCII
Antes de maio de 1961 a maioria dos sistemas de
computadores tinha uma maneira particular de representar
os caracteres alfanuméricos.
Assim, foi proposto o uso de um código comum, a fim de
possibilitar a comunicação entre os computadores,
objetivando permitir a troca de dados entre máquinas de
diferentes tipos e fabricantes.
O "American National Standards Institute" aceitou a
proposta de Robert W. Bemer e sua equipe para
desenvolver o "American Standard Code for Information
Interchange" (Código Padrão Norte-americano para
Intercâmbio de Informações), hoje conhecido como código
ASCII.
Assim, ASCII é um código numérico usado para
representar os caracteres, entendido por quase todos os
computadores, impressoras e programas de edição de texto,
que usa a escala do decimal 0 a 127. No modo extendido o
ASCII forma 256 caracteres.
É baseado no alfabeto romano, como é usado no idioma
inglês moderno, e visa padronizar a forma pela qual os
computadores representam letras, números, acentos e sinais
diversos ( por exemplo: <, {, ] ) e alguns códigos de
controle ( <Crtl> ) que são utilizados para converter todos
os símbolos em números binários, os quais efetivamente
podem ser processados.
O código permite não só uma melhor compreensão sobre a
lógica do funcionamento do computador, mas, também,
-1
24,6(8) = 2x(8 ) + 4x(8 ) + 6x(8 )
= 20,75(10)
Conversão de decimal para octal.
Um número decimal pode ser convertido para octal usando o
mesmo método de divisões sucessivas que foi usadona
conversão de decimal para binário, porém com um fator de
divisão 8 em vez de 2.
Veja um exemplo de conversão do número 26610 para a base
octal.
266
 33 + o resto 2
8
33
 4 + o resto 1
8
4
 0 + o resto 4
8
266(10) = 4
1
2(8)
Sistema de numeração Hexadecimal
www.concursosdeti.com.br
7(16)
Códigos Alfanuméricos
372(8) = 3x(82) + 7x(81) + 2x(80)
= 250(10)
1
A
4
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
possibilita a utilização de caracteres, cujos símbolos não
aparecem no teclado.
É importante notar que há apenas 95 caracteres que podem
ser impressos. E eles são numerados de 32 a 126, pois os
primeiros códigos (de 0 a 31) foram reservados para
caracteres de controle, ou seja, que controlam funções ou
equipamentos. Esses caracteres de controle tiveram sua
origem nos primórdios da computação, quando eram
utilizadas máquinas Teletype (como máquinas de escrever
eletro-mecânicas), fitas de papel perfurado e impressoras de
Caracter
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
D1
D2
D3
D4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
Espaço
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
www.concursosdeti.com.br
Hexadecimal
0
1
2
3
4
5
6
7
8
9
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
Prof. Bruno Guilhen
cilindro, portanto muitos deles são dirigidos a estes
equipamentos. Por exemplo:
- o caráter 10 representa a função "LINE FEED", que faz
com que uma impressora avance seu papel,
- o caráter 24 representa a função "cancel",
- o caráter 27 representa a função "escape" determinada
pela tecla <ESC>, encontrada no canto superior esquerdo
nos teclados.
Binário
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0000 0100
0000 1001
0000 1010
0000 1011
0000 1100
0000 1101
0000 1110
0000 1111
0001 0000
0001 0001
0001 0010
0001 0011
0001 0100
0001 0101
0001 0110
0001 0111
0001 1000
0001 1001
0001 1010
0001 1011
0001 1100
0001 1101
0001 1110
0001 1111
0010 0000
0010 0001
0010 0010
0010 0011
0010 0100
0010 0101
0010 0110
0010 0111
0010 1000
0010 1001
0010 1010
0010 1011
0010 1100
0010 1101
0010 1110
0010 FFFF
0011 0000
0011 0001
0011 0010
0011 0011
0011 0100
0011 0101
0011 0110
0011 0111
0011 1000
0011 1001
0011 1010
0011 1011
0011 1100
0011 1101
0011 1110
0011 1111
5
Comentário
Caracter Nulo
Começo de cabeçalho de Tx
Começo de texto
Fim de texto
Fim de transmissão
Interroga
Confirmação
Sinal sonoro
Volta um caracter
Tabulação Horizontal
Próxima linha
Tabulação Vertical
Próxima Página
Início da Linha
Shift-out
Shift-in
Data link escape
Controle de dispositivo
Controle de dispositivo
Controle de dispositivo
Controle de dispositivo
Negativa de Confirmação
Synchronous idle
Fim de transmissão de bloco
Cancela
Fim de meio de transmissão
Substitui
Escape
Separador de Arquivo
Separador de Grupo
Separador de registro
Separador de Unidade
www.brunoguilhen.com.br
Fundamentos da Computação
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DELETE
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
LFG-TI
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
Prof. Bruno Guilhen
0100 0000
0100 0001
0100 0010
0100 0011
0100 0100
0100 0101
0100 0110
0100 0111
0100 1000
0100 1001
0100 1010
0100 1011
0100 1100
0100 1101
0100 1110
0100 1111
0101 0000
0101 0001
0101 0010
0101 0011
0101 0100
0101 0101
0101 0110
0101 0111
0101 1000
0101 1001
0101 1010
0101 1011
0101 1100
0101 1101
0101 1110
0101 1111
0110 0000
0110 0001
0110 0010
0110 0011
0110 0100
0110 0101
0110 0110
0110 0111
0110 1000
0110 1001
0110 1010
0110 1011
0110 1100
0110 1101
0110 1110
0110 1111
0111 0000
0111 0001
0111 0010
0111 0011
0111 0100
0111 0101
0111 0110
0111 0111
0111 1000
0111 1001
0111 1010
0111 1011
0111 1100
0111 1101
0111 1110
0111 1111
Tabela ASCII – Extendida.
Representa caracteres extras, caracteres de línguas mortas e
caracteres especiais para desenhos. caracteres especiais
para desenhas figures
www.concursosdeti.com.br
6
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
Prof. Bruno Guilhen
= Universal Character Set = Conjunto Universal de
Caracteres".
O Unicode fornece um número único para cada caractere,
não importando a plataforma (a máquina e/ou sistema
operacional em uso), o programa ou o idioma. Foi
desenvolvido para resolver problemas que existiam com
outros sistemas de codificação, pois não eram suficientes
para suportar todos os caracteres e idiomas.
Vários sistemas operacionais, programas e browsers
modernos suportam o Unicode. Sua criação foi baseada na
tabela ASCII. Existem diversas normas e/ou padrões da
ISO, dentre eles o ISO 8859-“X” que define o conjunto
completo de alfabetos de todos os idiomas. O ISO 8859-1,
por exemplo é o padrão Latin-1 (Alfabeto Latino 1) que nós
usamos. Este padrão está sendo largamente implementado e
já pode ser visto como um substituto para o padrão ASCII
(que é definido pelo ISO 646).
Usuários do browser Mozilla Firefox 1.0 (para Windows)
podem clicar em “View" ou "Exibir” em seguida em
“Character Encoding" ou "Codificação” para verificar a
opção “Western (ISO 8859-1)" marcada. Para ver outras
opções de codificação, basta clicar em “More Encodings"
ou "Mais”. No Internet Explorer 6, esta opção é parecida,
onde podemos ver "Europeu Ocidental (Windows)
marcada.
Dica: Quando acontecer de você acessar um site (usando o
Firefox) e os caracteres da página não ficarem
completamente legíveis, ou seja, faltando acentuação,
caracteres truncados ou estranhos, certifique-se de que o
código de caracteres esteja marcado como “Western (ISO
8859-1)” . Isto vale também para os browsers do Linux
Mozilla, Galeon, Konkeror, etc. No caso do Internet
Explorer, o mesmo emitirá um aviso de instalação sob
demanda para o idioma usado no referido site.
No exemplo da figura 40, podemos ver o Mapa de
Caracteres do Windows XP. Para ter acesso a esse mapa,
basta clicar em "Iniciar\Programas\Acessórios\Ferramentas
do Sistema\Mapa de Caracteres".
Caso não encontre nesse caminho, é possível que não esteja
instalado. Neste caso, será necessário ir ao Painel de
Controle, clicar em Adicionar ou Remover Programas,
inserir o CD do Windows e adicionar o Mapa de
Caracteres.
Como conseguir um caracter que não está no teclado
Pressionando a tecla <ALT> e o número do caracter (D)
aparecerá o dígito correspondente em um processador de
texto.
Faça uma experiência: abra o Word ou o Notepad, pressione
<Alt> e o número 65 (no teclado numérico ativado). Levante
os 2 dedos juntos. Deve surgir a letra A maiúscula na tela do
programa.
Outras codificações
Há vários conjuntos de caracteres hoje em dia. Por exemplo,
há um conjunto de caracteres denominado ISO, similar ao
ASCII, que contém caracteres adicionais para as linguagens
européias.
Também há conjunto de caracteres que se constitui em um
padrão mais universal chamado ISO Latin 1, que é usado em
muitos sistemas operacionais e em programas para
navegação na Internet.
Duas das mais importantes codificações atualmente
utilizadas são:
ISO: "International Standardization Organization". É o
padrão ocidental, utilizado também no Brasil.
Cada caractere só possui 1 byte ( 8 bits ), gerando um
máximo de 256 caracteres.
UTF-8: "Unicode Transformation Format-8". É o padrão
mundial, que pode ser usado em quase todos os idiomas.
Cada caracter possui 2 bytes ( 16 bits ), o que permite um
valor máximo bem maior que o anterior: 65.536 caracteres.
Nota: Arte ASCII é aquela onde os únicos elementos
utilizados são os caracteres disponíveis no teclado do
computador.
O UNICODE
Unicode é o padrão universal de codificação de caracteres.
Essa codificação existe em três formas: em 8 bits (UTF-8,
baseado no ASCII), 16 bits (UTF-16) e 32 bits (UTF-32).
Foi criado pelo Consórcio Unicode e é baseado no padrão
ISO 10646 (ISO = International Organization for
Standardization
=
Organização
Internacional
de
Padronização). O Unicode também é conhecido como "UCS
www.concursosdeti.com.br
7
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
bit de mais alta ordem, como por exemplo o bit 31 numa
palavra de 32 bits.
Como o tamanho de uma palavra manipulada por um
computador tem tamanho limitado, os números que podem
ser representados também têm tamanho limitado. Se o
tamanho de uma palavra é igual a n bits, o maior número
possível de ser representado é igual a 2n. Se ao realizarmos
operações sobre os números, elas gerarem resultados que
não podem ser representados na quantidade de bits
reservados ocorre o que denominados de overflow
(números muito grandes) ou underflow (números muito
pequenos). Tanto o overflow quanto o underflow geram
exceções e são tratados pelo sistema operacional.
Os computadores manipulam tanto números positivos
quanto números negativos, que são representados em
complemento a 2. Nesta convenção os números que
possuem 0s à esquerda são considerados positivos e os
números com 1s à esquerda são considerados negativos. O
complemento a 2 é obtido invertendo-se o número binário e
depois somando 1 a este valor. Porém, uma regra simples
para transformar um número binário em sua representação
em complemento a 2 é a seguinte:
1) copie da direita para a esquerda todos os bits até
encontrar o primeiro bit 1 inclusive e
2) inverta todos os demais bits logo abaixo esta ilustrado
um exemplo da obtenção de representação em
complemento a 2 de um número binário com 4 dígitos.
Figura 40 – Mapa de Caracteres do Windows XP
Ainda no exemplo da figura 40, é preciso ressaltar que:
1. Os caracteres mudam de acordo com o tipo de fonte
escolhida. Portanto, vai depender do número de fontes que
estiver instalado em seu computador;
2. Para que você tenha a mesma visão da tabela acima, é
necessário marcar a caixa "Modo de exibição avançado";
IV.
0110 = 6 na base 10
1001 (número binário invertido)
+ 0001 (soma com 1)
1010 (complemento a 2)
usando a regra:
0110 ->1010
Aritmética Computacional
As palavras de um computador são compostas por bits e
podem representar números armazenados na memória. Estes
números podem ter diferentes significados, como inteiros ou
reais, serem positivos ou negativos. A manipulação dos
números inclui operações de soma, subtração, multiplicação
e divisão.
O objetivo deste capítulo é mostrar como o hardware
implementa a representação dos números, os algoritmos
adequados para operações aritméticas e sua implicação no
conjunto de instruções da máquina.
A respresentação em complento a 2 tem a vantagem de
representar números negativos sempre com o bit 1 em sua
posição mais significativa. Assim, o hardware só precisa
testar
este bit para verificar se o número é positivo ou negativo.
Este bit é conhecido como bit de sinal. A seguir está
representada uma seqüência de números binários (8 dígitos)
representados em complemento 2.
0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
0000 0011 = 3
.............
0111 1101 = 125
0111 1110 = 126
0111 1111 = 127
No conjunto acima nota-se que o número mais a esquerda é
zero, logo o número é positivo.
.............
1000 0001 = -127 (o número mais a direita indica o sinal)
1000 0010 = -126
1000 0011 = -125
.............
1111 1101 = -3
1111 1110 = -2
1111 1111 = -1
No conjunto acima nota-se que o número mais a esquerda é
um, logo o número é negativo.
Números com Sinal e Números sem Sinal
Os números podem ser representados em qualquer base.
Porém, a base 2 é a mais adequada para os computadores
porque tratam com somente dois valores 0 e 1. Estes valores
são implementados facilmente através de circuitos elétricos.
Da aritmética temos que, em qualquer base, o valor do iésimo dígito d de um número é dado por: d x basei, onde i
começa em 0 e cresce da direita para a esquerda, de acordo
com a posição ocupada pelo dígito. Por exemplo, o número
1011 na base dois é igual a:
(1x23) + (0x22) + (1x21) + (1x20) = (1x8) + (0x4) + (1x2) +
(1x0) = 8 + 0 + 2 + 1 = 11.
Portanto, os bits são numerados como 0,1,2,3,... da direita
para a esquerda em uma palavra.
Utilizamos a expressão bit menos significativo para designar
o bit 0, e a expressão bit mais significativo para designar o
www.concursosdeti.com.br
Prof. Bruno Guilhen
8
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
Prof. Bruno Guilhen
Adição e Subtração
Numa soma os bits são somados um a um da direita para a
esquerda, com os carries sendo passados para o próximo bit
à esquerda. A operação de subtração usa a adição. O
subtraendo é simplesmente negado antes de ser somado ao
minuendo. Lembre-se que a máquina trata com números
representados em complemento a 2. A seguir mostr-se as
operações de soma (6+7) e subtração (7-6) bit a bit entre
dois números representados com 4 dígitos binários.
710 = 0 1 1 12
610 = 0 1 1 02
1310 = 1 1 0 12
110 = 0 0 0 12
Construção de uma Unidade Lógica Aritmética
A unidade lógica aritmética (ALU – Arithmetic Logic Unit)
é o dispositivo que realiza as operações lógicas e
aritméticas, definidas pelo conjunto de instruções, dentro do
processador.
A ALU é construída basicamente por quatro blocos básicos
de hardware: portas AND, portas OR, NOT (inversores) e
multiplexadores.
As implementações de operações lógicas são as mais
simples de serem realizadas, pois elas são mapeadas
diretamente com componentes do hardware.
A próxima função a ser incluída é a adição. Supondo que
temos apenas um bit para ser somado, necessitamos de um
circuito com duas entradas para os operandos, uma saída
para a soma resultante, uma entrada relativa ao carry in e
uma saída para o carry out. A Figura 41 mostra este
somador.
Como citado anteriormente, tanto a soma como a subtração
podem gerar overflow ou underflow, se o resultado obtido
não puder ser representado pela quantidade de bits que
formam uma palavra. Se somarmos ou subtrairmos dois
números com sinais contrários, nunca ocorrerá overflow ou
underflow. Isto porque operandos com sinais contrários
nunca podem ser maior do que qualquer dos operandos.
O overflow ocorre quando somamos dois operandos
positivos e obtemos um resultado negativo, ou vice-versa.
Isto significa que utilizamos o bit de sinal, gerando um
carry, para armazenar um valor pertencente ao resultado da
operação. Raciocínio semelhante é realizado para detectar a
ocorrência do underflow numa subtração. Neste caso, o bit
de sinal também é usado para armazenar um valor
pertencente ao resultado da operação.
Os projetistas de um sistema devem decidir onde tratar a
ocorrência de overflow ou de underflow em operações
aritméticas. Elas podem ser tratadas tanto por hardware
quanto por software. Pode existir a detecção por hardware
que gera uma exceção, e que depois é tratada por software.
Figura 41. Somador de um bit
Podemos especificar as saídas soma e carry out através de
equações lógicas, que podem ser implementadas a partir
dos blocos de hardware mencionados anteriormente. A
equação lógica para gerar o bit carry out é dada por:
Operações Lógicas
Os computadores manipulam palavras, mas é muito útil,
também, manipular campos de bits dentro de uma palavra ou
mesmo bits individuais. O exame de caracteres individuais
(8 bits) dentro de uma palavra é um bom exemplo dessa
necessidade. Assim, as arquiteturas de conjuntos de
intruções incluem instruções para manipulação de bits.
Um dos tipos de instrução utilizados são as de deslocamento
de bits. As instruções podem deslocar bits tanto à direita
quanto à esquerda. Todos os bits são movidos para o lado
determinado e os bits que ficam vazios são preenchidos com
0s. Outras instruções lógicas muito úteis são que
implementadas na unidade lógica e aritmética de um
processador são as operações NOT, AND, OR e XOR. A
seguir mostra-se as operações lógicas, bit a bit, de
deslocamento à direita, à esquerda, NOT, AND, OR e XOR.
www.concursosdeti.com.br
CarryOut = (b. CarryIn) + (a.CarryIn) + (a.b).
E, a equação lógica para gerar o bit soma é dada por:
Soma = (a . b . carryin ) + ( a . b . carryin ) + ( a .
b .CarryIn) + (a . b . CarryIn).
Para completar o projeto de uma ALU de n bits podemos
conectar n somadores de um bit. Os carry outs gerados
pelos bits menos significativos da operação podem ser
propagados por toda a extensão do somador, gerando um
carry out no bit mais significativo do resultado da
operação. Este somador é denominado somador de carry
propagado.
9
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
Um método elegante de multiplicar números com sinal
recebeu o nome de algoritmo de Booth. Ele foi elaborado a
partir da constatação de que com a capacidade de somar e
de subtrair números existem várias maneiras de se calcular
um produto. Por exemplo, podemos substrituir um string de
1s no multiplicador por uma subtração quando encontramos
o primeiro 1, e por uma soma ao encontrarmos o último 1
do string.
Booth buscou atingir maior velocidade de processamento
utilizando operações de deslocamento, que ainda hoje são
operações mais rápidas do que operações de soma. Baseado
nesta observação, se desejarmos maior velocidade na
multiplicação de números inteiros por uma potência de 2,
basta que utilizemos operações de deslocamento indicando
a quantidade de deslocamentos igual ao expoente.
A grande vantagem do algoritmo de Booth é tratar com
facilidade os números com sinal. O raciocínio de Booth foi
classificar os grupos de bits como início, meio e fim de um
string de 1s. Naturalmente um string de 0s não precisa ser
considerado.
A operação de subtração pode ser realizada somando-se o
minuendo com a negação do subtraendo. Este efeito é
realizado acrescentando uma entrada complementada de b ao
somador e ativando o carry in do bit menos significativo
para um. O somador então calcula a + b + 1. Ao escolhermos
a versão invertida de b obtemos:
a+
b + 1 = a + ( b + 1) = a + (-b) = a - b.
A simplicidade do projeto do hardware de um somador para
números de complemento a 2 demonstra porque esta
representação tornou-se um padrão para operações
aritméticas inteiras em computadores.
O problema com o somador de carry propagado está
relacionado a velocidade de propagação do carry, que é
realizada seqüencialmente. Num projeto de hardware a
velocidade é um fator crítico. Para solucionar este problema
existem diversos esquemas para antecipar o carry. Porém,
nestes esquemas são utilizadas mais portas lógicas o que
provoca um aumento no custo.
Um dos esquema para antecipar o carry é denominado carry
lookahead. Os somadores que utilizam o esquema de carry
lookahead baseiam sua implementação em vários níveis de
abstração. Utilizando a abreviação ci para representar o iésimo bit de carry, podemos escrever a equação do carry
como:
Algoritmo da multiplicação
Este algoritmo precisa apenas de dois passos principais: o
teste do produto e o seu deslocamento; pois os registradores
Produto e Multiplicador podem combinados em um só. O
algoritmo começa com o Multiplicador na metade à direta
do registrador Produto, e 0 na metade à esquerda.
1. Testa se Produto é igual a 0 ou 1.
2. Produto = 0, passa ao item 4.
3. Produto = 1, soma o Multiplicando à metade esquerda
do Produto e coloca o resultado na metade à esquerda do
resgistrador Produto.
4. Desloca o registrador Produto 1 bit à direita.
5. Verifica se foram realizadas todas as repetições
necessárias de acordo com o tamanho da palavra, se não
volta ao item 1.
6. Fim.
ci = (bi . ci) + (ai . ci) + (ai . bi) = (ai . bi) + (ai + bi) . ci
Os termos (ai . bi) e (ai + bi) são tradicionamente chamados
de gerador (gi) e propagador (pi), respectivamente.
Usando estas relações para definir ci + 1, obtemos:
ci + 1 = gi + pi . ci
Qualquer equação lógica pode ser implementada com uma
lógica de dois níveis. Mesmo esta formulação mais
simplificada pode gerar equações muito grandes e, portanto
levar a circuitos lógicos relativamente grandes e caros,
dependendo do número de bits a serem somados.
Divisão
A divisão é a operação recíproca da multiplicação. Dentre
as operações aritméticas é a que aparece menos
freqüentemente nos códigos dos programs.
No algoritmo da divisão são utilizados dois operandos, o
dividendo e o divisor, e produzidos dois resultados o
quociente e o resto. A relação entre os componentes da
divisão pode ser expressa da seguinte forma:
Multiplicação
Para realizar a multiplicação são necessários dois operandos,
um multiplicando e um multiplicador para gerar um
operando produto. O algoritmo da multiplicação diz que os
dígitos do multiplicando devem ser multiplicados pelos
dígitos do multiplicador um de cada vez, da direita para a
esquerda, deslocando os produtos intermedários um dígitos à
esquerda em relação ao imediatamente anterior.
Uma observação importante é que o número de bits do
produto final (n+m) é maior do que o número de bits do
multiplicando (n) ou do multiplicador (m). Além disso, a
multiplicação também precisa tratar a ocorrência de
overflow.
Considerando os dígitos binários 0 e 1, temos apenas duas
possibilidades de escolha, a cada passo da multiplicação:
dividendo = quociente x divisor + resto,
onde o resto é sempre menor que o divisor.
Às vezes, os programas usam a divisão simplesmente para
obter o resto, ignorando o quociente. Além disso, é
necessário que seja detectada a divisão por zero, que é
matematicamente inválida.
Algoritmo da divisão
Da mesma forma que foram combinados registradores na
multiplicação, também na divisão são combinados dois
registradores, o Resto e o Quociente. O algoritmo começa
com o Resto na metade à esquerda do registrador Resto, e o
Quociente na metade à direita.
1. coloque uma cópia do multiplicando
(multiplicando x 1) no lugar apropriado, se o dígito do
multiplicador for igual a 1, ou
2. coloque 0 (multiplicando x 0) no lugar
apropriado, se o dígito do multiplicador for igual a 0.
Assim, é necessário desenvolver um algoritmo em hardware
que seja eficiente para realizar a multiplicação.
www.concursosdeti.com.br
Prof. Bruno Guilhen
1. Desloca o registrador Resto 1 bit à esquerda.
2. Subtrai o registrador Divisor da metade à esquerda do
registrador Resto e armazena o resultado na metade
esquerda do registrador Resto.
10
www.brunoguilhen.com.br
Fundamentos da Computação
LFG-TI
Prof. Bruno Guilhen
4. Teste se overflow ou underflow.
5. Sim, gera exceção.
6. Não, arredonde a mantissa para o número de bits
apropriado.
7. Testa se resultado está normalizado.
8. Sim, Fim.
9. Não, retorna ao passo 3.
3. Testa se Resto é menor do que 0.
4. Resto < 0, restaura valor original com Divisor + metade
esquerda do Resto, armazenando na metade esquerda do
registrador Resto e deslocando 1 bit à esquerda, inserindo 0
no novo bit menos signifiativo, passa ao item 6.
5. Resto = 0, desloca o registrador Resto 1 bit à esquerda,
inserindo 1 no novo bit mais à direita.
6. Verifica se foram realizadas todas as repetições
necessárias de acordo com o tamanho da palavra, se não
volta ao item 1.
7. Desloca a metade a esquerda do registrador Resto 1 bit à
direita, Fim.
Algoritmo da multiplicação em ponto flutuante
1. Soma os expoentes com peso dos dois números,
subtraindo o valor do peso da soma para obter o novo
expoente.
2. Multiplique as mantissas.
3. Normalize o produto se necessário, deslocando à direita e
incrementando o expoente.
4. Teste se overflow ou underflow.
5. Sim, gera exceção.
6. Não, arredonde a mantissa para o número de bits
apropriado.
7. Testa se resultado está normalizado.
8. Não, retorna ao passo 3.
9. Não, faça o sinal do produto positivo se ambos os sinais
dos operandos originais são os mesmos, caso contrário o
sinal é negativo, Fim.
Ponto Flutuante
Assim como os números decimais podem ser representados
em notação científica normalizada os números binários
também podem. A aritmética computacional que manipula
os números binários em notação científica normalizada é
denominada de aritmética de ponto flutuante.
Os projetistas do hardware devem encontrar um
compromisso entre a mantissa e o expoente dos números em
ponto flutuante. A relação entre e mantissa e o expoente é
expressa do seguinte modo: o aumento do número de bits
reservados à mantissa aumenta a precisão do número,
enquanto o aumento do número de bits reservados ao
expoente aumenta o intervalo de variação dos números
representados.
Deve ser observado que as interrupções relativas ao overflow
e ao underflow também ocorrem na representação em ponto
flutuante. Porém, neste caso, overflow e o underflow
ocorrem quando o expoente é muito grande ou muito
pequeno, respectivamente, para ser
armazenado no espaço reservado a ele.
Outra questão que os projetistas devem decidir é se vão ser
utilizados os mesmos registradores tanto para números
inteiros quanto para números de ponto flutuante. A adoção
de registradores diferentes aumenta ligeiramente o número
de instruções necessárias a execução do programa. O
impacto maior está na criação de um conjunto de instruções
de transferência de dados para mover os dados entre os
registradores de ponto flutuante e a memória. Os benefícios
estão no fato de não precisar aumentar o tamanho do campo
nas instruções para diferenciar os operandos e aumentar a
banda passante dos registradores.
A partir de 1980 todos os computadores projetados adotam
uma representação padrão para números em ponto flutuante
denominada IEEE 754. A adoção deste padrão facilita a
portabilidade de programas (precisão simples = 1 bit de
sinal, 8 bits de expoente e 23 bits de mantissa + 1 implícito =
24, precisão dupla = 1 bit de sinal, 11 bits de expoente e 52
bits de mantissa + 1 implícito = 53).
A adição e a multiplicação com números de ponto flutuante,
na sua essência, utilizam as operações inteiras
correspondentes para operar as mantissas, mas é necessária
uma manipulação extra nos expoentes e para a normalização
do resultado.
Algoritmo da adição em ponto flutuante
1. Compare o expoente dos dois números. Desloque o menor
número à direita até que seu expoente se iguale ao maior
número.
2. Some as mantissas.
3. Normalize a soma, deslocando à direita e incrementando o
expoente ou deslocando à esquerda e decrementando o
expoente.
www.concursosdeti.com.br
11
www.brunoguilhen.com.br
Download

Fundamentos da Computação LFG-TI Prof. Bruno Guilhen www