Fundamentos da arquitetura de computadores Sistemas de numerao
e representao de dados Prof. Andr Renato 1 Semestre / 2012
Slide 2
Sistemas de numerao Os sistemas de numerao esto na base da
matemtica. Eles so responsveis por estabelecer a relao entre
valores e smbolos. Sem eles fica muito difcil realizar operaes
simples como adio ou diviso.
Slide 3
Sistemas de numerao Um sistema de numerao precisa definir: Uma
base numrica: base 10, base 2, base 16, base 134 etc. Um conjunto
de smbolos distintos (alfabeto), sendo um para cada valor da base:
algarismos arbicos, alfabeto hexadecimal, {0,1} etc
Slide 4
Sistemas de numerao O sistema de numerao mais utilizado pelos
humanos o decimal (base 10, com os algarismos arbicos). Com o
advento da computao digital, o sistema de numerao binrio (ou
simplesmente sistema binrio) ganhou uma importncia crucial,
principalmente para os profissionais da rea.
Slide 5
Sistemas de numerao Por que o sistema binrio em detrimento do
sistema decimal? Quando as mquinas (computadores) passaram a ser
dispositivos eltricos, comeou a ficar complicado representar 10
tipos diferentes de correntes eltricas. Era muito mais simples
representar apenas: passagem de corrente (circuito fechado) ou no
(circuito aberto).
Slide 6
Sistemas de numerao Cada valor representado por combinao de
smbolos 0 e 1, da esquerda para direita. Estes smbolos que compem
os nmeros so chamados de bits. A cada 8 bits temos 1 byte. 1024
bytes equivalem a 1 Kilobyte (KB) 1024 KBs equivalem a 1 Megabyte
(MB) 1024 MBs equivalem a 1 Gigabyte (GB) 1024 GBs equivalem a 1
Terabyte (TB) 1024 TBs equivalem a 1 Petabyte (PB)
Slide 7
Sistemas de numerao O sistema binrio se adequa muito bem s
mquinas digitais, permitindo um processamento bastante eficiente.
Todas as operaes matemticas bsicas presentes no sistema decimal
podem ser facilmente adaptadas para o sistema binrio. Entretanto,
primeiro necessrio entender como converter valores entre os dois
sistemas.
Slide 8
Sistemas de numerao Converso decimal-binrio: Consiste em pegar
o nmero decimal e realizar sucessivas divises por 2, at que o
quociente seja 0 (zero). Depois, para formar o nmero em binrio, so
pegos todos os restos das divises do final para o comeo.
Exemplos:
Slide 9
Sistemas de numerao Converso binrio-decimal: Consiste em
realizar o processo inverso, ou seja, multiplicaes por potncias de
2, seguida da soma de produtos. Um jeito simples possvel atravs da
arrumao dos smbolos da seguinte forma: 256 128 64 32 16 8 4 2 1 1 0
1 1 1 0 1 0 1
Slide 10
Sistemas de numerao Adio de dois nmeros: O resultado da soma de
dois algarismos binrios dado pela tabela a seguir: Na prtica, o
ltimo resultado corresponde a deixar o algarismo 0 e aplicar o
mundialmente famoso vai 1 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10
(2, em decimal)
Slide 11
Sistemas de numerao importante destacar que o resultado nunca
poder conter algarismos diferentes de 0 e 1. Adies de trs ou mais
valores podem ser feitas atravs de resultados parciais entre dois
valores de cada vez. Exemplos de 2 e 3 parcelas:
Slide 12
Sistemas de numerao Como fica a representao de nmeros negativos
em binrio? Obviamente, o computador no pode armazenar -101 (-5). O
sinal de negativo precisa ser expresso na forma de um smbolo
binrio.
Slide 13
Sistemas de numerao O primeiro esquema de representao chama-se
Sinal e Magnitude (SM). Nele, o mdulo do nmero representado de
forma equivalente. O sinal de negativo pode ser substitudo pelo
smbolo (bit) 1 colocado na primeira posio esquerda. Ex: -13
(10001101, em 8 bits)
Slide 14
Sistemas de numerao A representao em SM traz alguns pontos
ruins: Se usarmos 8 bits para representar nmeros, precisaremos
reservar 1 bit para o sinal, restando apenas 7 bits para o mdulo do
nmero. O valor 0 (zero) pode ser representado de duas formas:
00000000 e 10000000 (-0).
Slide 15
Sistemas de numerao Alm disso, sempre que realizarmos uma
operao aritmtica, precisaremos saber se o resultado ser positivo ou
negativo para colocar ou no o smbolo 1 na frente dos outros bits.
Embora seja uma representao vlida, na prtica SM pouco utilizado. O
mais comum utilizar outra representao de nmeros negativos.
Slide 16
Sistemas de numerao Complemento: Existem basicamente dois tipos
de complementos para o sistema binrio: Complemento base-1
Complemento base Como estamos falando de base 2, os complementos
tambm so denominados: Complemento 1 (C1) e Complemento 2 (C2).
Slide 17
Sistemas de numerao Para calcular o complemento C1, precisamos
dos seguintes passos: Converter o mdulo do nmero em decimal para
binrio (j vimos isso); Completar com 0 (zero) esquerda at o nmero
ter a quantidade de bits do problema em questo; Calcular quanto
falta em cada casa para alcanar o maior valor possvel (base-1 =
1);
Slide 18
Sistemas de numerao Exemplo: -13 (com 8 bits) Valor binrio
(13): 1101 Com 8 bits: 00001101 Quanto falta em cada casa para
chegar a 1? 11110010 Na prtica, esta ltima etapa corresponde, no
sistema binrio, a inverter os smbolos 0 e 1.
Slide 19
Sistemas de numerao O complemento base-1 ainda apresenta um dos
problemas do SM: O valor do nmero 0 pode ser representado de duas
formas: 00000000 e 11111111 (-0) Para evitar esta situao, o
complemento base (C2) mais indicado.
Slide 20
Sistemas de numerao Para calcular o complemento C2 de um nmero,
precisamos calcular o complemento C1 e depois adicionar 1 ao
resultado. comum acontecer o vai 1 no ltimo bit (o mais
significativo). Neste caso, o vai 1 deve ser ignorado.
Exemplo:
Slide 21
Sistemas de numerao No complemento C2, no h duas forma de
representar 0 (provar!!!). Assim, ele o mais utilizado para
representar nmeros negativos, pois as etapas de inverso e soma do 1
so feitas muito rapidamente pelo computador.
Slide 22
Sistemas de numerao A subtrao de dois nmeros em binrio pode ser
feita de duas maneiras: A primeira a forma tradicional que
utilizamos em decimal. Utilizamos a seguinte tabela: 0 0 = 0 1 0 =
1 0 1 = 1 (vem 1) 1 1 = 0
Sistemas de numerao A segunda forma de realizar a subtrao vem
de uma propriedade da aritmtica: A - B = A + (-B) Para tanto,
precisamos calcular o complemento C2 do subtraendo antes de
realizar a operao desejada.
Sistemas de numerao A multiplicao e a diviso em binrio seguem
um esquema semelhante ao utilizado em decimal, porm mais simples.
Exemplos: 17x5=85 21x4=84 85/5=17 84/21=4
Slide 27
Sistemas de numerao O sistema binrio, como j foi dito, bastante
apropriado para mquinas digitais como o computador. Por ser
utilizada uma base menor do que a decimal, normalmente os nmeros em
binrios ocupam grandes sequncias de 16 ou 32 bits cada.
Slide 28
Sistemas de numerao Para seres humanos, estes nmeros grandes so
de difcil tratamento. Imagine um HD com apenas 200MB: Se voc um
programador de um aplicativo para recuperao de informaes, pode ser
interessante que voc controle o acesso a cada pequena parte (byte)
do disco. Um disco de 200MB contm 209715200 bytes. J imaginou este
nmero em binrio?
Slide 29
Sistemas de numerao Para certas aplicaes, necessrio ter outro
sistema de numerao que permita nmeros menores que os representados
em binrio. Um dos sistemas propostos foi o octal (base 8). A
converso de decimal para octal feita de forma idntica ao sistema
binrio.
Slide 30
Sistemas de numerao Converter: 12 36 1020
Slide 31
Sistemas de numerao Adio e subtrao podem ser feitas de forma
anloga, lembrando que o resultado nunca poder ter algarismo
estranhos ao alfabeto do sistema de numerao. A partir de agora,
fica mais importante a separao entre smbolo e valor.
Slide 32
Sistemas de numerao Como seria o complemento base 1 (C7) para
os nmeros, com 8 algarismos: 47 125 89 E o complemento base
(C8)???
Slide 33
Sistemas de numerao A multiplicao e a diviso devem ser feitas
de forma semelhante. O computador no calcula estes resultados
diretamente. Mesmo que seja feito um programa que trabalhe com
nmeros em octal, o computador os converter para binrio
primeiro.
Slide 34
Sistemas de numerao Para fazer a converso octal binrio, devem
analisar a relao entre as bases: 8 equivalente a 2 3 ; Logo, so
necessrios trs algarismos da base 2 para representar um valor da
base 8;
Slide 35
Sistemas de numerao Se pegarmos cada algarismo em octal e o
representarmos por trs algarismos binrios, podemos fazer a converso
diretamente. Exemplo: (2431) 8 = 1305 = (????) 2 (101) 8 = 65 =
(????) 2 (137) 8 = 95 = (????) 2
Slide 36
Sistemas de numerao Para fazer a converso binrio octal
precisamos pegar grupos de 3 bits, da direita para a esquerda, e
formar um algarismo em octal com cada grupo. Exemplo: (10101011) 2
= 171= (?????) 8 (111001) 2 = 57 = (?????) 8 (11101101011) 2 = 1899
= (?????) 8
Slide 37
Sistemas de numerao O sistema octal, embora encurte bastante o
tamanho dos nmeros apresenta uma caracterstica ruim: Grande parte
das mquinas trabalha, desde o comeo da era digital, com conjunto de
8 bits ou mltiplios; 8, 16, 32, 64 no so divisveis por 3 Logo a
representao em octal no fica redonda
Slide 38
Sistemas de numerao Passou-se a utilizar um sistema de numerao
mais potente, chamado de sistema hexadecimal, com base 16. A tabela
a seguir mostra a relao de valores e smbolos deste sistema:
ValorSmboloValorSmbolo 0088 1199 2210A 3311B 4412C 5513D 6614E
7715F
Slide 39
Sistemas de numerao A converso decimal hexadecimal se faz de
forma semelhante; Devemos ter ateno ao valores maiores que 9 e seus
respectivos smbolos; Exemplo: 1234 156 256 1099
Slide 40
Sistemas de numerao A converso hexadecimal decimal se faz com o
mtodo das potncias: Exemplo: 12D A3F 7BC
Slide 41
Sistemas de numerao A converso hexadecimal binrio se faz
transformando cada algarismo da base 16 em 4 algarismos binrios
(bits), pois 16 = 2 4 ; Exemplo: A2DE F459 50AB
Slide 42
Sistemas de numerao A converso binrio hexadecimal se faz atravs
de formao de grupos com 4 bits cada, comeando pela direita;
Exemplo: 101010101111 10111011 10000110011111
Slide 43
Sistemas de numerao A converso de hexadecimal octal no pode ser
feita diretamente. Primeiro passamos para binrio e depois para
octal. O processo inverso tambm passa pelo sistema binrio primeiro.
Exemplo: (12DD) 16 = (????) 8 (5637) 8 = (????) 16
Slide 44
Sistemas de numerao Como fica o complemento base - 1 (C15) dos
seguintes nmeros em hexadecimal? 1372 ADEF 340C E o complemento
base (C16)?
Slide 45
Sistemas de numerao Adio e subtrao podem ser feitos de forma
semelhante s que foram vistas. Exemplos: 1234+ABCD 982+12F
45A1-12FF 513-4ED
Slide 46
Sistemas de numerao Multiplicaes e divises tambm podem seguir
os mtodos j vistos. Vale lembrar que o computador sempre far as
operaes em binrio. Ainda falta analisar como o computador trata
nmeros reais (fracionrios). Como ser representado 12,125, por
exemplo?
Slide 47
Sistemas de numerao Pela forma de converso tradicional, podemos
fazer as sucessivas divises por 2 na parte inteira. A parte
fracionria realiza um procedimento diferente. Vamos ver o nmero
12,125! Como fica a converso binrio decimal?
Slide 48
Sistemas de numerao A computao empregado como ferramenta de
diversas reas da cincia, como fsica, qumica, biologia, matemtica
entre outras. Por vezes, necessrio trabalhar com valores muito
grandes ou muito pequenos (distncias entre corpos celestes,
quantidade de tomos em um composto, tempo de acesso memria,
distncia entre tomos de uma molcula).
Slide 49
Sistemas de numerao Imagine se desejssemos somar N1 e N2,
sendo: N1 = 0,000000000076 e N2 = 2341890000000,0000000000 Quantos
bits precisaramos para representar o resultado? A imensa maioria
seria de 0 (zeros).
Slide 50
Sistemas de numerao Para tanto, usa-se em computao a chamada
notao cientfica, que recebe o nome de ponto flutuante. O nmero 5
bilhes poderia ser escrito assim: +5 x 10 9 Se considerarmos a base
10 como valor constante da representao, precisaramos de 3 bits para
o valor da mantissa 5 (parte fracionria) e mais bits 4 para o
expoente 9
Slide 51
Sistemas de numerao Um mesmo nmero pode ser representado de
diversas formas diferentes em notao cientfica: 4 x 10 2 40 x 10 1
0,4 x 10 3 Normalmente, utiliza-se a ltima forma, com a mantissa
ente 1 e 0,1 chamada de normalizada.
Slide 52
Sistemas de numerao Como trabalharemos em base binria, teremos
valores do tipo: 5 = 101 = 0,101 x 2 3 12 = 1100 = 0,11 x 2 4 57 =
111001 = 0,111001 x 2 6
Slide 53
Sistemas de numerao Internamente, o sistema computacional deve
armazenar 4 informaes: O sinal da mantissa O valor da mantissa O
sinal do expoente O valor do expoente
Slide 54
Sistemas de numerao Alm desses valores, outros aspectos
precisam ser definidos: A quantidade de bits utilizados; O modo de
representao da mantissa O modo de representao do expoente A
quantidade de bits da mantissa e do expoente A posio do sinal dos
valores (se for o caso) A base de exponenciao
Slide 55
Sistemas de numerao Vejamos um exemplo: SMantissaExpoente 1724
32 bits S sinal do nmero Expoente: 1 bit para sinal e 6 para
magnitude Mantissa: normalizada Base de exponenciao: 2
Slide 56
Sistemas de numerao Exemplos (converter para o formato do slide
anterior): 407,375 -0,078125
Slide 57
Sistemas de numerao As operaes de adio e subtrao de dois nmeros
em ponto flutuante requer, numa primeira etapa, o alinhamento das
mantissa de forma que os expoente sejam iguais; Depois, realiza-se
a soma ou subtrao das mantissas, mantendo o expoente. Caso o
resultado no esteja normalizado, este procedimento executado.
Slide 58
Sistemas de numerao Para multiplicao ou diviso, no h
necessidade de alinhamento das mantissas. Realiza-se a operao
desejada nas mantissas e soma-se ou subtrai-se os expoentes, se as
operaes forem de multiplicao ou diviso, respectivamente.
Slide 59
Sistemas de numerao J aprendemos como os nmeros so armazenados
e tratados pelo computador. Porm, a computao no envolve somente
nmeros. Letras e outros smbolos so muito utilizados para informar o
usurio sobre algum evento do sistema, por exemplo.
Slide 60
Sistemas de numerao Como o computador consegue armazenar
letras??? possvel realizar sucessivas divises por 2 utilizando o
caracter $, por exemplo? Logicamente deve haver outra forma de
representao. Uma das formas mais utilizadas atravs da Tabela ASCII
(American Standard Code for Information Interchange).
Slide 61
Sistemas de numerao Nesta tabela, todos os smbolos imprimveis,
como A-Z, 0-9, @,#,$,%,&,*,+,-,/,\,{,},],[, entre outros esto
representados. Alm desses, outros smbolos no imprimveis esto
presentes. Cada smbolo possui um valor nico. O smbolo A corresponde
ao valor 65 (1000001, em binrio), por exemplo.
Slide 62
Sistemas de numerao Como o computador sabe que o valor 1000001
ser tratado como letra A e no nmero 65? Esta diferenciao feita pelo
programa que utiliza o dado. Se o programa mandar imprimir o valor
como nmero, ser tratado como tal. Se o programa manda escrever a
mensagem na tela, ser tratado como letra.
Slide 63
Sistemas de numerao Exemplo Pascal: var codigo:byte; codigo :=
65; writeln(codigo); writeln(chr(codigo));