Buscar

Unidade 2

Prévia do material em texto

Sistemas de Numeração e Aritmética Computacional 1
Arquitetura e
Organização de Computadores
(CCE0091)
Universidade Estácio de Sá
Graduação – Engenharia / TI
Professor: Affonso C. Junior
Unidade 2 - Sistemas de Numeração, 
Aritmética e Representação de Dados.
Sistemas de Numeração e Aritmética Computacional 2
Sistemas de numeração
Conversão de bases
Aritmética computacional
Tipos de dados
Representação de caracteres
Sistemas de Numeração e Aritmética Computacional 3
Sumário
• Sistemas (bases) de numeração
• Conversão entre bases
• Aritmética computacional
• Representação de dados numéricos
– Inteiros x não-inteiros
• Representação de caracteres
Sistemas de Numeração e Aritmética Computacional 4
• Primeiramente, um pouco de curiosidade histórica:
O Sistema Sexagesimal (chamado por alguns de “base 60”)
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
foi, muito provavelmente, o primeiro a ser criado,
na antiga Mesopotâmia (sumérios, acádios, etc)
Sistemas de Numeração e Aritmética Computacional 5
• Sistemas de numeração são formas de representação de
valores.
• Existem os sistemas não-posicionais e os posicionais.
• Nos não-posicionais o símbolo não depende da posição.
• Por exemplo, os numerais romanos: o símbolo X vale 10
em qualquer posição que estiver no número, seja IX ou
LXV. Exemplo: LXXX XX IX
• Já nos posicionais, o valor do símbolo muda com a posição.
Por exemplo: o símbolo 6 dentro do número 625 significa o
valor 600, mas no número 461 significa 60.
• Diariamente trabalhamos com o sistema posicional
decimal, assim chamado por ter dez símbolos:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
• Como tem dez símbolos, dizemos também que possui
base 10.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 6
• Como sabemos, o computador funciona em binário, ou
seja, representações de número somente com os símbolos
0 e 1.
• Este é um sistema de numeração com base 2 ou binário.
• Na eletrônica ainda é comum trabalhar-se com o sistema
octal, que possui base 8, cujos símbolos são:
0, 1, 2, 3, 4, 5, 6, 7
• Há também o sistema de numeração hexadecimal (de
base 16), formado pelos símbolos:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
e muito usado para a exibição de endereços de memória.
• São estes quatro sistemas de numeração que serão o
fundamento do estudo da computação, sendo necessários
para compreensão da organização de sua arquitetura.
• Para compreendermos melhor a relação entre eles,
devemos estudar a conversão de uma base para outra.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 7
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 8
• Alguns exemplos de valores (compare as mesmas
quantidades, expressas em diferentes sistemas):
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 9
• Quanto vale uma cadeia binária?
(ou: convertendo de binário para decimal)
Pense bem: como sabemos o valor do número abaixo (base 10)?
E em binário (base = 2)? 
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 10
Conversões: binário, octal, e hexadecimal p/ decimal
• Segue-se a regra simples:
• Ou seja, eleva-se a base a converter à potência cujo valor
é sua posição no número e multiplica-se pelo símbolo.
• Assim, de binário (base 2) para decimal (base 10),
podemos fazer, por exemplo:
• Ex1:
• Ex2:
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 11
• Conversão de decimal para binário:
Podemos ter, basicamente 3 casos:
- número inteiro comum. Ex: 97
- número fracionário (< 1). Ex: 0,69
- número com parte inteira e parte fracionária.
Divisões sucessivas do número pela base (no caso, 2), até 
quociente = 0. Pega-se os restos, na ordem inversa.
Dica: faça a última divisão
(1 por 2 = 0, resto 1)
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 12
• É possível converter parte fracionária também?
– SIM
Produtos sucessivos por dois. Ao invés dos restos, pega-se as 
partes inteiras (esquerda da vírgula), de cima para baixo. Paramos 
quando foi atingido o valor 1,00, ou quando as contas não 
convergem, mas já se tem uma precisão (nº de bits satisfatório).
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 13
Como fazer c/ um núm. c/ parte inteira e fracionária?
Vejamos o exemplo (174,25)10:
174 / 2 = 87 resto 0 � (“método da escadinha”)
87 / 2 = 43 resto 1
43 / 2 = 21 resto 1
21 / 2 = 10 resto 1
10 / 2 = 5 resto 0
5 / 2 = 2 resto 1
2 / 2 = 1 resto 0
1 / 2 = 0 resto 1 Logo: parte inteira: 10101110
• 0,25 x 2 = 0,50 (inteiro 0)
• 0,50 x 2 = 1,00 (inteiro 1) ==> parte fracionária: 01
Juntando ambos: (174,25)10 = (10101110,01)2
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 14
Binários também podem representar não inteiros.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 15
“Micro revisão” de potências (se necessário, reveja em casa)
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 16
Conversão de decimal para binário, octal e hexadecimal
• De decimal para octal: (749,97)10 = ??? (em octal)
749 / 8 = 93 resto 5 (apenas a parte inteira, inicialmente)
93 / 8 = 11 resto 5
11 / 8 = 1 resto 3
1 / 8 = 0 resto 1 (interessante fazer a última divisão.)
• Como na conversão binária, pega-se os restos, de baixo 
para cima. Logo: 749(10) = 1355(8) (ou: 749 d = 1335 o )
• Parte fracionária: mesmo procedimento do binário
0,97 x 8 = 7,76 (parte inteira = 7)
0,76 x 8 = 6,08 (parte inteira = 6)
0,08 x 8 = 0,64 (parte inteira = 0)
==> parte fracionária: 760 Logo: (749,97)10 = (1355,760)8
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 17
� E a conversão de decimal para hexadecimal?
Mesmas regras, outra base (16), contas mais chatas.
Lembre-se: 0, 1, 2, ...., 9, A=10, B=11, C=12,..., F=15
• (155,742)10: = ??? (em hexa)
155 / 16 = 9 resto 11 ( 11 = B )
9 / 16 = 0 resto 9 (interessante fazer a última divisão.)
• Como na conversão binária, pega-se os restos, de baixo 
para cima. Logo: 155(10) = 9B(16) (ou: 749 d = 9B h )
• Parte fracionária: mesmo procedimento do binário
0,742 x 16 = 11,872 (parte inteira 11 (=B) )
0,872 x 16 = 13,952 (parte inteira 13 (=D) )
0,952 x 16 = 15,232 (parte inteira 15 (=F) )
⇒ Logo: parte fracionária= BDF, e (155,742)10 = (9B,BDF)16
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 18
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Como pode ver, não é 
muito bom deixar seu 
professor estressado!!
☺
Sistemas de Numeração e Aritmética Computacional 19
De binário, octal, e hexadecimal para decimal
• E de octal (base 8) para decimal:• Finalmente, de hexadecimal (base 16) para decimal:
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 20
Conversão de decimal para binário, octal e hexadecimal
• Para converter números da base 10 para outras bases, segue-
se a seguinte regra:
• parte inteira: divide-se o número a ser convertido pela base
desejada; toma-se o quociente resultante e divide-se
novamente pela base até que o quociente seja zero; os restos
das divisões formam a parte inteira do número convertido; o
primeiro resto representa o último dígito da parte inteira do
número; o último quociente representa o primeiro dígito da
parte inteira;
• parte fracionária: multiplica-se a parte fracionária do número
a ser convertido pela base desejada; toma-se a parte
fracionária do número resultante e repete-se a operação; a
parte inteira dos produtos obtidos representam a parte
fracionária do número procurado.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 21
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Como podemos observar, há uma correlação simples
entre cada dígito hexa e um nibble (grupo de 4 bits), e
entre cada dígito octal e um grupo de 3 bits.
Sistemas de Numeração e Aritmética Computacional 22
Conversão de binário para octal
• Basta converter cada três símbolos binários em um octal,
partindo-se da vírgula. Caso faltem símbolos para
completar três, completa-se com zeros.
• Exemplo:
(010 101,110 1)2 = (25,64)8
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 23
Conversão de octal para binário
• O oposto do método anterior: pega-se cada valor
e converte-se pela tabela em três símbolos
binários.
• Exemplo:
(356,71)8 = (11 101 110,111 001)2
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 24
Conversão de binário para hexadecimal
• Semelhante a conversão de octal, apenas
pegando cada quatro símbolos binários para um
hexadecimal, convertidos a partir da tabela.
• Exemplo:
(1101 1010 0100,1010 11)2 = (DA4,AC)16
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 25
Conversão de hexadecimal para binário
• Oposto do método anterior. 
• Exemplo:
(CAFE,01)16 = (1100 1010 1111 1110,0000 0001)2
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 26
• Conversão de “hexa” (para os íntimos) para octal:
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 27
• Conversão de octal para hexadecimal:
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 28
Operações Lógicas bit-a-bit
• As operações lógicas que já vimos (AND, OR, NOT, XOR, etc) 
também são definidas sobre cadeias de bits.
• Aplica-se a operação a cada par de bits correspondentes.
• Veja os exemplos2:
A = 1100 1010 B = 0011 1100 C = 1111 0000 D = 0000 1111
NOT A = 0011 0101 (inverte cada bit)
NOT B = 1100 0011
A and B A or B A xor B A or C B and D
1100 1010 1100 1010 1100 1010 1100 1010 0011 1100
0011 1100 0011 1100 0011 1100 1111 0000 0000 1111
------------------------------------------------------------------------
0000 1000 1111 1110 1111 0110 1111 1010 0000 1100
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 29
� Aritmética binária – Adição binária
Tabuada binária
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 30
� Aritmética binária – Subtração binária
Tabuada subtração
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
OBS: para nós, não será tão importante. É definida e
estudada matematicamente, mas, como veremos, pode ser
implementada através da adição em “complemento a 2”.
Sistemas de Numeração e Aritmética Computacional 31
� Aritmética binária – Multiplicação binária
Tabuada muito simples: 1.o fator x 1 = repete, x 0 = 0
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Exemplo: produto 
'1101010110' x '101101' 
(854 x 45).
Sistemas de Numeração e Aritmética Computacional 32
� Aritmética binária – Deslocamentos (shift)
Deslocamento
(shift)
à esquerda e
à direita.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Ex:
000101112 (23)
<< 1 (desl.1 bit esq)
001011102 (46)
>> 1 (desl.1 bit dir)
000010112 (11)
<< 2 (desl.2 bit esq)
010111002 (92)
Regra geral ���� deslocar uma cadeia binária de:
- n bits à esquerda: resulta em seu valor x (2n)
- n bits à direita: resulta em seu valor / (2n) (e o que “cai” é o resto!)
Sistemas de Numeração e Aritmética Computacional 33
• Variáveis e tipos de dados: conceitos chave em programação
• CPU existe para executar programas, que são conjuntos de 
instruções. Programas manipulam dados.
• Instruções e dados devem estar carregados na MP.
• Cada instrução ou dado ocupa 1 ou mais células de memória, 
e possui um endereço de memória.
• Dados são guardados em estruturas de dados (as mais 
simples são chamadas de variáveis de memória).
• Uma variável possui: um nome, um endereço (o da célula 
inicial), um tipo de dados, e um tamanho (em bytes).
• Os tipos de dados disponíveis dependem do nível no qual 
estamos programando (linguagem de alto nível, assembly, 
ou linguagem de máquina), e da linguagem utilizada.
• Toda linguagem de alto nível fornece um conjunto de tipos 
de dados (q, p/ as de 3ª geração, em geral não varia muito).
• Dados: numéricos, inteiros e não-inteiros, e não-numéricos.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 34
Exemplo: linguagem Pascal
Program Exemplo;
Uses CRT;
Var
a, b : integer;
med : real;
Begin
write(“Digite 2 valores: ”);
read( a, b );
med := (a+b)/2.0;
writeln(“Media = ”, med );
readln;
End.
Ling. C: int, float, double, char
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Tipos de dados (básicos):
INTEGER inteiro “com sinal”
REAL ponto flutuante
CHAR caractere (só 1)
BOOLEAN lógico (True / False)
Tipo Natureza Sinal Bytes Ex:
boolean L x 1 true
integer I S 2 0 7 -2
real R S 4 1.0, 3.5
char A N 1 ‘A’,‘a’
--- variações de integer --
word I N 2
shortint I S 1
byte I N 1
longint I S 4
Sistemas de Numeração e Aritmética Computacional 35
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 36
• Já sabemos, por exemplo, que 01112 = 7.
• Como representar o valor –7 ?
• Várias formas já foram testadas
• Técnicas mais importantes:
– Sinal-magnitude
– Complemento-a-um (ou complemento)
– Complemento-a-dois
• Sinal magnitude: mais simples.
– Um bit para representar o sinal (1=negativo, 0=não-negativo)
Ex: 0 0000111 = 7 1 0000111 = - 7
35 = 0 0100011 -35 = 1 0100011
Faixa de valores (p/ 8 bits): -127 a +127 (8b -> 0..255)
Vantagens: simplicidade; CPU pode verificar facilmente o sinal.
Desvantagem: dupla representação para o 0
Representaçãoda Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 37
• OBS: repare que, a partir de agora, o tamanho da
cadeia de bits é importante, e deve estar definido.
• Complemento a um (ou complemento):
– Conceitualmente: é o que falta para chegar ao valor
máximo da cadeia de bits (p/ dado número de bits).
– Ex: complemento de 0101 é o que falta para chegar a
1111. Subtrai-se 0101 de 1111 = 1010
– Pois 0101 + 1010 = 1111.
– Para simplificar, basta inverter cada bit (0�1, 1�0)
Ex: -17 = ? 17 = 0001 0001 � 1110 1110
Desvantagens:
- dupla representação para o 0 (0000 e 1111);
- soma de 2 negativos não é simples;
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 38
• OBS: repare que, a partir de agora, o tamanho da
cadeia de bits é importante, e deve estar definido.
• Complemento de dois:
– Calcula-se o complemento de 1, e soma-se 1 à cadeia
resultante.
Ex: 35 = 0010 0011 e o -35 ?
35 = 0010 0011 -> 1101 1100 -> +1 -> 1101 1101
Faixa de valores (p/ 8 bits): -128 a +127
Fórmula geral: p/ n bits � m=n-1 � –2n .. 0 .. +(2n–1)
Vantagens:
CPU pode verificar facilmente o sinal; Representação
única para o 0; Subtração pode ser feita como adição
Exercício: mostre a conta para o caso: 35 - 17
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 39
Complemento 
de dois
Soma ����
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Regra: se houve “vai-1” na
última soma à esquerda, mas
as duas parcelas têm sinais
inversos, não há overflow!
(logo, este vai-1 pode ser
desprezado).
Sistemas de Numeração e Aritmética Computacional 40
Números em “ponto fixo”
• Dados numéricos podem ser: inteiros e ñ-inteiros
• Não-inteiros (decimais) podem ser representados por: 
ponto-fixo ou ponto-flutuante.
• Ponto fixo: números de dígitos fixo para representar: 
parte inteira + parte fracionária
• Cada dígito tem um peso de acordo c/ a posição 
relativa à vírgula decimal (notação posicional).
• Exemplo: 2 bytes, 8 bits p/ cada parte
1,1101 � 00000001 (int) + 11010000 (frac)
Os 2 bytes armazenados: 00000001 11010000
• Não há necessidade de representar a vírgula.
• Cabe à instrução (e ao hardware) reconstruí-lo.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 41
Números em “ponto flutuante”
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 42
Números em
“ponto flutuante”
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 43
Representação de Caracteres
• Em programação: 1 caracter x 1 cadeia (string)
• Em Pascal: VAR letra : char; nome : string[40];
• Representado através de tabelas, ou “códigos”.
• Principais exemplos:
– BCD e EBCDIC: 
BCD: Binary Coded Decimal – representado pelo seu 
equivalente de 4 bits;
EBCDIC: Extended BCD Interchange Code – igual ao BCD + 4 
bits (campo zonado) que não são usados p/ dados numéricos.
– ASCII: American Standard Code for Information 
Interchange – Princípio igual ao do EBCDIC
Original: 7 bits = 128 símbolos (sem ç, á, õ,...)
ASCII estendido (Latin-1): 8 bits = 256 símbolos
– Unicode: consórcio, 16 bits/caracter � 64K caracteres.
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 44
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
ASCII 
(versão de 8 bits)
Sistemas de Numeração e Aritmética Computacional 45
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)
Sistemas de Numeração e Aritmética Computacional 46
Representação de Caracteres
• UTF-8: técnica mista – ASCII + Unicode.
• Tudo em Unicode � 2 bytes por caractere � dobro do 
espaço de um texto ASCII � desperdício.
• Um texto guardado em UTF-8 é quase todo em ASCII e, 
quando precisamos de um caractere ‘especial’ do Unicode, 
usamos um caractere especial, que indica "atenção, o 
seguinte caractere é em Unicode".
Representação da Informação
(bases numéricas, conversão, aritmética, tipos de dados)

Continue navegando