Title: Sistemas de Computa
1 Sistemas de Computação
- Aritmética Computacional
- Ponto Flutuante
Material originalmente elaborados pelo Prof. Dr.
David Fernandes david_at_dcc.ufam.edu.br
Compilado a partir de slides preparados por
Prof. MSc. Leandro Galvão galvao_at_dcc.ufam.edu.br w
ww.dcc.ufam.edu.br/dcc_oc.html
2Frações binárias
- A parte fracionária (entre 0 e 1) de um número
real em notação binária é representada por - Portanto, seu valor em decimal (F) é dado por
- A expressão anterior pode ser reescrita como
3Frações binárias
- A expressão anterior sugere uma técnica de
conversão. se multiplicarmos F por 2, teremos - Da expressão acima, percebe-se que b-1 é a parte
inteira do número (2 F). - Portanto, podemos afirmar que (2 F) b-1 F1,
onde 0 lt F1 lt 1, e - Para encontrar b-2, basta repetir o processo.
4Frações binárias
- Assim, o processo de conversão da fração F de
decimal para binário envolve repetidas
multiplicações por 2. A cada passo, a parte
fracionária do resultado do passo anterior é
multiplicada por 2. - Os dígitos da parte inteira serão 0 ou 1 (da
definição de bi), contribuindo para a formação da
representação binária.
5Frações binárias
- O processo anterior não é necessariamente exato
- Uma fração decimal com número finito de dígitos
pode corresponder a uma fração binária com um
número infinito de dígitos. - Nesses casos, o algoritmo de conversão é suspenso
após um número pré-estabelecido de passos,
dependendo da precisão desejada.
6Escolha da notação
- Com a notação de complemento de 2, podemos
representar a parte inteira de números reais. - Com a notação fracionária, podemos representar a
parte fracionária do mesmo número real. - Limitações
- números muito grandes não podem ser representados
- números muito pequenos não podem ser
representados - dificuldades para manter precisão durante
realização de operações aritméticas
7Ponto flutuante (Padrão IEEE 754)
- Um número real pode ser representado no seguinte
formato - (-1)s m Be
- s sinal
- m mantissa
- B base (implícita, não representada)
- e expoente
8Ponto flutuante (Padrão IEEE 754)
- O formato de precisão simples (float) ocupa 32
bits. - O formato de precisão dupla (double) ocupa 64
bits.
9Ponto flutuante (Padrão IEEE 754) Sinal
- O bit mais à esquerda guarda o sinal do número
- bit 0 ? número positivo
- bit 1 ? número negativo
10Ponto flutuante (Padrão IEEE 754) Fração
- A mantissa é representada na forma normalizada
(base binária) - A mantissa é composta por
- Algarismo 1
- Ponto de separação
- Fração
11Ponto flutuante (Padrão IEEE 754) Fração
- O algarismo 1 e o ponto de numeração não precisam
ser armazenados, pois são os mesmos para todos os
números reais representados. - Caso a fração possua menos bits que o esperado,
zeros devem ser colocados à direita, pois não têm
significância.
12Ponto flutuante (Padrão IEEE 754) Fração
- Por razões históricas, o co-processador de ponto
flutuante Intel não utiliza parte inteira
implícita, ou seja, a parte inteira também é
representada juntamente com a fração. - O formato de precisão estendida ocupa 80 bits.
13Ponto flutuante (Padrão IEEE 754) Expoente
- O expoente é representado na notação deslocada,
ou excesso de N - Maior expoente representável 2n-1
- Representado por 11...11
- Menor expoente representável -(2n-1 - 1)
- Representado por 00...00
14Ponto flutuante (Padrão IEEE 754) Notação
excesso de N
Decimal Complemento de dois Notação excesso de N
4 -- 111
3 011 110
2 010 101
1 001 100
0 000 011
-1 111 010
-2 110 001
-3 101 000
-4 100 --
15Ponto flutuante (Padrão IEEE 754) Notação
deslocada
- Representação do valor zero 01...11.
- Representação do valor um 10...00.
- Demais valores somar ao zero (deslocamento).
16Ponto flutuante (Padrão IEEE 754)
17Ponto flutuante (Padrão IEEE 754)
fração em binário
fração em decimal
float
expoente não sinalizado
expoente decimal
18Ponto flutuante Ponto fixo Faixa de números
representados
19Ponto flutuante Zero
- Como representar o zero em ponto flutuante?
- Adota-se uma convenção.
0
0
20Ponto flutuante Infinito
- Notação especial para representar eventos
incomuns - permite que os programas possam manipulá-los sem
que sejam interrompidos.
8
-8
21Ponto flutuante NaN Not a Number
- É uma representação do resultado de operações
inválidas, tais como - 0/0
- 8 - 8
- 8/8
- 0 8
- vx, x lt 0
22Código ASCII (texto)
- ASCII
- American Standard Code for Information
Interchange - A primeira versão foi criada em 1963 para
normalizar a transmissão e armazenamento de
texto. - Em 1967 foram incluídas as letras minúsculas no
código, que essencialmente permaneceu inalterado
até nossos dias.
23Código ASCII
Código ASCII
32 48 0 64 _at_ 80 P 96 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 50 2 66 B 82 R 98 b 114 r
35 51 3 67 C 83 S 99 c 115 s
36 52 4 68 D 84 T 100 d 116 t
37 53 5 69 E 85 U 101 e 117 u
38 54 6 70 F 86 V 102 f 118 v
39 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 58 74 J 90 Z 106 j 122 z
43 59 75 K 91 107 k 123
44 , 60 lt 76 L 92 \ 108 l 124
45 - 61 77 M 93 109 m 125
46 . 62 gt 78 N 94 110 n 126
47 / 63 ? 79 O 95 _ 111 o 127 DEL
24UNICODE
- O código ASCII possui a grande desvantagem de
apenas permitir a representação de 28256
símbolos diferentes. - O código UNICODE pretende normalizar a
codificação dos caracteres utilizados em todas as
escritas do mundo. - Utiliza 16 bits para codificar cada caracter e
encontra-se disponível nos sistemas informáticos
mais recentes. - Mais informações em http//www.unicode.org
25Para saber mais...
- William Stallings. Computer Organization and
Architecture Designing for Performance. 7th Ed.
Prentice Hall, 2005. Cap. 09. - Patterson Hennessy. Organização e Projeto de
Computadores (Interface HW/SW). Cap. 3. - Sivarama P. Dandamudi. Guide to Assembly Language
Programming in Linux. Springer, 2005. Cap. 22. - Kip R. Irvine. Assembly Language For Intel-Based
Computers. 5th Edition. Prentice Hall, 2006. Cap.
17.
26Questões