Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitetura de
de Computadores,
Computadores
Sistemas
e Sistemas
de Computação
Operativos
Informática2015/2016
de Gestão, ESTiG/IPB
José Rufino
baseado no livro “The Essentials of
2020/2021
Computer Organization and Architecture”
de Linda Null e Julia Lobur
Parte AC2
Representação de Dados
Objetivos
3
2.1 Introdução
4
2.2 Sistemas de Numeração Posicionais
5 10 3 + 8 10 2 + 3 10 1 + 6 10 0 + 4 10 -1 + 7 10 -2
1 2 4 + 1 2 3 + 0 2 2 + 0 2 1 + 1 2 0 + 1 2 -1 + 1 2 -2 =
16 + 8 + 0 + 0 + 1 + 0.5 + 0.25 = 25.751 0
7
2.3 Conversão entre Sist. de Numeração
- Conversão de Números Naturais
8
2.3 Conversão entre Sistemas de Numeração
- Conversão de Números Naturais
- Método da Subtração
• converter 1901 0 para a base 3
– exprimir 190 como uma soma
de potências de 3, em que o
peso de cada potência só pode
ser 0, 1 ou 2 (alfabeto ternário)
– como 3 5 = 243, então o resul-
tado terá menos de 6 dígitos
– ora, para a potência 3 4 = 81,
tem-se 2 x 81 = 162 ≤ 190
– aproveita-se o 2 e subtrai-se
162 a 190, pelo que resta 28
9
2.3 Conversão entre Sistemas de Numeração
- Conversão de Números Naturais
- Método da Subtração
• converter 1901 0 para a base 3
– a próxima potência de 3
ainda não usada é 3 3 = 27
– o coeficiente/dígito 2 não se
pode usar pois 2 x 27 > 28
– o coeficiente/dígito 1 pode- -
se usar pois 1 x 27 ≤ 28 ;
aproveita-se o 1 e subtrai-se
27 a 28, pelo que resta 1
– a próxima potência de 3 (3 2
= 9) é demasiado grande,
pelo que o seu coeficiente 10
será 0; continua a sobrar 1
2.3 Conversão entre Sistemas de Numeração
- Conversão de Números Naturais
- Método da Subtração
• converter 1901 0 para a base 3
– a próxima potência de 3 (3 1
= 3), é demasiado grande,
pelo que o seu coeficiente
será 0; continua a sobrar 1
– para a última potência de 3
(30 = 1), o coeficiente/dígito
1 permite ter 1 x 30 = 1 ≤ 1 ;
aproveita-se o 1 e o resto é 0
– o resultado da conversão,
lido de cima para baixo, é:
19010 = 210013
11
2.3 Conversão entre Sistemas de Numeração
- Conversão de Números Naturais
- Método da Divisão
• ideia base:
12
2.3 Conversão entre Sistemas de Numeração
- Conversão de Números Naturais
- Método da Divisão
• converter 1901 0 para a base 3
– divisão do número a conver-
ter (190), pela base (3) para
a qual se pretende converter 190 |3
10 63 |3
1
– o processo termina quando 03 21 |3
o quociente for igual a 0 0
0 7 |3
1 2 |3
– o resultado da conversão, 2 0
lido de baixo para cima, é:
1901 0 = 210013 13
2.3 Conversão entre Sistemas de Numeração
- Conversão de Números Naturais
- Conversão da Base 10 para a Base 2
• método da subtração:
– idêntico ao aplicado para valores inteiros, mas ...
– … subtraem-se potências negativas da base alvo
• começa-se pela potência de expoente -1 (n - 1, para
a base n) e vai-se diminuindo o valor do expoente
17
2.3 Conversão entre Sistemas de Numeração
- Conversão de Valores Fracionários
- Método da Subtração
• conversão do decimal
0.81251 0 para binário
– o resultado da conversão,
lido de cima para baixo, é:
0.81251 0 = 0.11012
18
2.3 Conversão entre Sistemas de Numeração
- Conversão de Valores Fracionários
- Método da Multiplicação
• método da multiplicação:
– multiplica-se o valor fracionário original pela base
– no produto, o valor à esquerda do ponto (ou seja, a
parte inteira do produto) é o 1º dígito do número
– o valor à direita do ponto é nova/ multiplicado pela base
– no produto, o valor à esquerda do ponto é o 2º dígito
– ...
– o processo repete-se até que a parte à direita do ponto
seja zero (ou até se atingir uma precisão “suficiente”)
19
2.3 Conversão entre Sistemas de Numeração
- Conversão de Valores Fracionários
- Método da Multiplicação
conversão do decimal
0.81251 0 para binário:
20
2.3 Conversão entre Sistemas de Numeração
- Conversão de Valores Fracionários
- Método da Multiplicação
conversão do decimal
0.81251 0 para binário:
21
2.3 Conversão entre Sistemas de Numeração
- Conversão de Valores Fracionários
- Método da Multiplicação
conversão do decimal
0.81251 0 para binário:
22
2.3 Conversão entre Sist. de Numeração
– Conversão expedita entre Bases 2, 8 e 16
23
2.3 Conversão entre Sist. de Numeração
– Conversão expedita entre Bases 2, 8 e 16
24
2.3 Conversão entre Sist. de Numeração
– Conversão expedita entre Bases 2, 8 e 16
25
2.3 Conversão entre Sist. de Numeração
– Conversão expedita entre Bases 2, 8 e 16
26
2.3 Conversão entre Sist. de Numeração
– Tabela Auxiliar p/ Conversão entre Bases
27
2.3 Conversão entre Sist. de Numeração
– A memorizar !!!
checkpoint:
exercícios 2.1 a 2.4
28
2.3.1 Adenda
- Gama de Representação na Base 2 s/ Sinal
{ 0, … , 2 N – 1 }
• exemplos:
– para N=8 bits
{ 0, … , 2 8 – 1 } = { 0, … , 255 }
{ 0, … , 2 7 – 1 } = { 0, … , 127 }
29
2.3.1 Adenda
- Aritmética Decimal e Aritmética Binária
• a aritmética binária é semelhante à aritmética decimal
(nota: veremos apenas exemplos com duas parcelas)
• adição decimal: 1 1
1 1 1
– exemplo →
30
2.3.1 Adenda
- Aritmética Decimal e Aritmética Binária
• subtração decimal: 1 1 1
• subtração binária: 0
0
– regras bit-a-bit → 1
1 empresta 1
– exemplo → 1 1
0
31
2.4 Representação de Inteiros com Sinal
35
2.4 Representação de Inteiros com Sinal
- Sinal e Magnitude
36
2.4 Representação de Inteiros com Sinal
- Sinal e Magnitude
37
2.4 Representação de Inteiros com Sinal
- Sinal e Magnitude
39
2.4 Representação de Inteiros com Sinal
- Sinal e Magnitude
40
2.4 Representação de Inteiros com Sinal
- Sistemas de Complemento
• exemplo: A = 167- 52
– B = 999 – 52 = 947 (complemento para 9 de 52)
– C = 167 + B = 167 + 947 = 114, com D = 1
– A = C + D = 1 + 114 = 115 = 167- 52 !!
– ou seja: -52 (<0) foi representado como 947 (>0)
42
2.4 Representação de Inteiros com Sinal
- Sistemas de Complemento à Base
– o complemento para 1 de
00010011 2 é 111011002
– a adição dá origem a um
bit de transporte final, que 000111012= 291 0= 48 – 19
é adicionado ao resultado
Note-se que o bit de sinal faz agora parte dos cálculos (i.e., não
é preciso processá-lo à parte), e pode ser modificado por estes.
[ o mesmo irá acontecer na aritmética em complemento para 2 ] 46
2.4 Representação de Inteiros com Sinal
(*) - Aritmética em Complemento para Um
• somar 19 com - 48
– 191 0 = 00010011 2, 11111
481 0 = 001100002 00010011
+ 11001111
– o complemento para 1 de 11100010
001100002 é 11001111 2
– a adição dá origem a um
número negativo (-29)
1
111000102 → 000111012=
– o valor absoluto obtém-
se do complemento p/ 1 = 291 0= | 19 – 48 |
47
2.4 Representação de Inteiros com Sinal
- Complemento para Um
49
2.4 Representação de Inteiros com Sinal
(*) - Aritmética em Complemento para 2
• na aritmética de complemento para dois, somam- -
se os valores binários e ignora-se qualquer bit de
transporte produzido nos bits mais significativos
• somar 48 com -19 11101100
+ 1
– 481 0= 001100002, 11101101
191 0= 00010011 2
– o complemento para 1 de
00010011 2 é 111011002
11101101
– o complemento para 2 de
00010011 2 é 111011012
– agora, o bit de transporte final, 000111012=
não é adicionado ao resultado 291 0= 48 – 19
50
2.4 Representação de Inteiros com Sinal
(*) - Aritmética em Complemento para 2
1111
• somar 19 com - 48 11001111
+ 1
– 191 0 = 00010011 2,
11010000
481 0 = 001100002
– o complemento para 1 de 1
001100002 é 11001111 2 00010011
– o complemento para 2 de + 11010000
001100002 é 110100002 11100011
52
2.4 Representação de Inteiros com Sinal
(*) - Deteção de Overflow em Comp. p/ 2
53
2.4 Representação de Inteiros com Sinal
(*) - Deteção de Overflow em Comp. p/ 2
58
2.5 Representação em Vírgula Flutuante
59
2.5 Representação em Vírgula Flutuante
60
2.5 Representação em Vírgula Flutuante
61
2.5 Representação em Vírgula Flutuante
63
2.5 Representação em Vírgula Flutuante
64
2.5 Representação em Vírgula Flutuante
- Normalização
0.001 x 28
• exemplo: as ilustrações à
direita são todas represen- 0.0001 x 29
tações válidas do valor 32
65
2.5 Representação em Vírgula Flutuante
- Normalização
• solução: normalização - o problema das represen-
tações sinónimas resolve-se estabelecendo a regra
de que o 1º dígito do significando tem que ser 1,
resultando daí um padrão único para cada valor
6
– portanto, para o exemplo anterior, tem-se 321 0 = 0.12x2
– na norma IEEE-754, este 1 é assumido implicitamente a
seguir ao ponto binário, dispensando-se a sua representação
• essa assumpção permite maior precisão da representação
66
2.5 Representação em Vírgula Flutuante
- Notação em Excesso
• problema: como representar expoentes negativos ?
(e.g., como representar 0.062510 = 0.0001 = 0.12 x 2 -3 ?)
68
2.5 Representação em Vírgula Flutuante
- Notação em Excesso
69
2.5 Representação em Vírgula Flutuante
- Notação em Excesso
70
2.5 Representação em Vírgula Flutuante
- Notação em Excesso
71
2.5 Representação em Vírgula Flutuante
72
2.5 Representação em Vírgula Flutuante
73
2.5 Representação em Vírgula Flutuante
- Aritmética em Vírgula Flutuante
– a soma será
0.1101012 x 2 4
75
2.5 Representação em Vírgula Flutuante
- Aritmética em Vírgula Flutuante
• exemplo (c/ transporte): somar 0.51 0 a si próprio expressando
as parcelas no modelo simplificado de 14 bits em excesso-16
– 0.51 0 = 0.12 x 2 0
– expoente = 0 + 16 = 16 = 100002
– soma: 10
| 0 | 10000 | 10000000 |
+ | 0 | 10000 | 10000000 |
| 0 | 10000 | 00000000 |
– acerto: +1 | 10000000 | 0
| 0 | 10001 | 10000000 | =
0.12 x 2 17-16 = 0.12 x 2 1 = 1.02 x 2 0 = 110 76
2.5 Representação em Vírgula Flutuante
- Erros de Representação
• independentemente do número de bits usado na
representação em vírgula flutuante, o modelo em
causa tem uma capacidade finita de representação
• o universo de números reais é infinito; portanto,
qualquer modelo de representação oferecerá
apenas aproximações dos valores reais
• em algum ponto, todos os modelos acabam por
falhar introduzindo erros nos cálculos
• aumentando o número de bits do modelo, reduzem-
se esses erros, mas nunca se eliminam por completo
77
2.5 Representação em Vírgula Flutuante
- Erros de Representação
• o objetivo é reduzir os erros ou, pelo menos, ter
alguma ideia da magnitude dos erros nos cálculos
• exemplo:
– no modelo de 14 bits, não é possível representar
com exatidão o valor decimal 128.5, pois seriam
necessários 9 bits no significando: 128.51 0 = 10000000.12
– quando se tenta representar 128.51 0 no modelo de 14
bits, perde-se o bit menos significativo e produz-se
um erro relativo de (128.5 -128) / 128.5 = 0.39%
• é ainda necessário levar em conta que os erros se
podem acumular ao longo de repetidas operações
78
2.5 Representação em Vírgula Flutuante
- Erros de Representação
• exemplo: se, repetidamente, se adicionasse 0.5 a
128.5, haveria um erro de 2% ao fim de 4 iterações
– [(128.5+0.5+0.5+0.5+0.5)-(128)] / 130.5 = 1.9%
• os erros podem ser minimizados quando se usam
operandos com magnitudes similares ou próximas:
– para adicionar repetidamente 0.5 a 128.5, será melhor
adicionar 0.5 a si próprio e adicionar o resultado a 128.5
– 0.5+0.5+0.5+0.5=2; 2 + 128.5 = 130 (perde-se 0.5,
logo o erro relativo seria (130.5 – 130)/130.5 = 0.38%)
• nestes exemplos, o erro surge pela perda do bit (-)
significativo; a perda do (+) significativo seria pior !
79
2.5 Representação em Vírgula Flutuante
- Erros de Representação
80
2.5 Representação em Vírgula Flutuante
- Erros de Representação
• o overflow e o underflow em vírgula flutuante podem
levar os programas a terminar abruptamente
• ocorre overflow quando não há espaço para guardar
os bits + significativos que resultam de um cálculo
• ocorre underflow quando um número é demasiado
pequeno para ser armazenado; uma situação deste
tipo pode resultar numa tentativa de divisão por zero
85
2.6 Códigos de Caracteres
- Unicode
• apresenta-se à direita
o espaço de codifica-
ção Unicode →
– os caracteres Unicode
de numeração + baixa
incluem o código ASCII
– os de numeração + alta
permitem a definição de
códigos próprios
checkpoint:
exercícios 2.24 a 2.26
86
Conclusões
• os computadores armazenam dados na forma de
bits, bytes e palavras, usando o sistema binário
• números em hexadecimal são formados usando
grupos de 4 bits
• os inteiros com sinal podem ser armazenados
em sinal e magnitude, complemento para um,
e complemento para dois
• os números em vírgula flutuante são codificados
segundo a norma IEEE 754
• os caracteres são armazenados usando ASCII,
EBCDIC ou Unicode
87
Referências
• http://en.wikipedia.org/wiki/Binary_numeral_system
• http://en.wikipedia.org/wiki/Octal
• http://en.wikipedia.org/wiki/Hexadecimal
• http://en.wikipedia.org/wiki/Signed_number_representations
• http://en.wikipedia.org/wiki/One%27s_complement
• http://en.wikipedia.org/wiki/Two%27s_complement
• http://en.wikipedia.org/wiki/Floating-point_arithmetic
• http://en.wikipedia.org/wiki/IEEE_754-2008
• http://en.wikipedia.org/wiki/Unicode
• http://en.wikipedia.org/wiki/Ascii
• http://en.wikipedia.org/wiki/Binary-coded_decimal
• http://en.wikipedia.org/wiki/Ebcdic 88
Referências
• http://en.wikipedia.org/wiki/Unicode
• http://en.wikipedia.org/wiki/Ascii
• http://en.wikipedia.org/wiki/Binary-coded_decimal
• http://en.wikipedia.org/wiki/Ebcdic
89