sistemas de computação prof. msc. leandro galvão [email protected] dcc_oc.html aritmética...

26
Sistemas de Computação Prof. MSc. Leandro Galvão [email protected] www.dcc.ufam.edu.br/ ~dcc_oc.html Aritmética Computaciona Aritmética Computaciona - Ponto Flutuante – Ponto Flutuante – Material originalmente elaborados pelo Prof. Dr. David Fernandes [email protected] Compilado a partir de slides preparados po Compilado a partir de slides preparados por

Upload: internet

Post on 17-Apr-2015

134 views

Category:

Documents


17 download

TRANSCRIPT

Page 1: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Sistemas de Computação

Prof. MSc. Leandro Galvão

[email protected]

www.dcc.ufam.edu.br/~dcc_oc.html

Aritmética ComputacionalAritmética Computacional-Ponto Flutuante –Ponto Flutuante –

Material originalmente elaborados pelo Prof. Dr. David [email protected]

Compilado a partir de slides preparados porCompilado a partir de slides preparados por

Page 2: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Frações bináriasFrações bináriasFrações bináriasFrações binárias

A parte A parte fracionáriafracionária (entre 0 e 1) de um (entre 0 e 1) de um número real em notação binária é número real em notação binária é representada por:representada por:

Portanto, seu valor em decimal (Portanto, seu valor em decimal (FF) é dado ) é dado por:por:

A expressão anterior pode ser reescrita A expressão anterior pode ser reescrita como:como:

1ou 0ib321.0 bbb

)2()2()2( 3

32

21

1 bbbF

)2(2)2(22 23

112

11

1 bbbF

31

21

11 (2(2(2 bbbF

Page 3: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Frações bináriasFrações bináriasFrações bináriasFrações binárias

A expressão anterior sugere uma técnica de A expressão anterior sugere uma técnica de conversão. se multiplicarmos conversão. se multiplicarmos FF por por 22, teremos:, teremos:

Da expressão acima, percebe-se que Da expressão acima, percebe-se que bb-1-1 é a parte é a parte inteira do número inteira do número (2 × F)(2 × F)..

Portanto, podemos afirmar que Portanto, podemos afirmar que (2 × F) = b(2 × F) = b-1-1 + F + F11, , onde onde 0 < F0 < F11 < 1 < 1, e:, e:

Para encontrar Para encontrar bb-2-2, basta repetir o processo., basta repetir o processo.

31

21

1 (2(22 bbbF

31

21

1 (2(2 bbF

Page 4: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Frações bináriasFrações bináriasFrações bináriasFrações binárias

Assim, o processo de conversão da fração Assim, o processo de conversão da fração FF de decimal de decimal para binário envolve para binário envolve repetidas multiplicações por 2repetidas multiplicações por 2. A cada . A cada passo, a parte fracionária do resultado do passo anterior é passo, a parte fracionária do resultado do passo anterior é multiplicada por 2.multiplicada por 2.

Os dígitos da parte inteira serão Os dígitos da parte inteira serão 00 ou ou 11 (da definição de (da definição de bbii), ), contribuindo para a formação da representação binária.contribuindo para a formação da representação binária.

Page 5: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Frações bináriasFrações bináriasFrações bináriasFrações binárias

O processo anterior não é necessariamente O processo anterior não é necessariamente exato:exato:

Uma Uma fração decimalfração decimal com número com número finitofinito de dígitos de dígitos pode corresponder a uma pode corresponder a uma fração bináriafração binária com um com um número número infinitoinfinito de dígitos. de dígitos.

Nesses casos, o algoritmo de conversão é Nesses casos, o algoritmo de conversão é suspenso após um número pré-estabelecido de suspenso após um número pré-estabelecido de passos, dependendo da passos, dependendo da precisão desejadaprecisão desejada..

Page 6: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Escolha da notação Escolha da notação Escolha da notação Escolha da notação

Com a notação de complemento de 2, podemos Com a notação de complemento de 2, podemos representar a parte inteira de números reais.representar a parte inteira de números reais.

Com a notação fracionária, podemos representar Com a notação fracionária, podemos representar a parte fracionária do mesmo número real.a parte fracionária do mesmo número real.

Limitações:Limitações:

números números muito grandesmuito grandes não podem ser representados não podem ser representados

números números muito pequenosmuito pequenos não podem ser representados não podem ser representados

dificuldades para dificuldades para manter precisão manter precisão durante realização de durante realização de operações aritméticasoperações aritméticas

Page 7: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)

Um número Um número realreal pode ser representado no pode ser representado no seguinte formato:seguinte formato:

(-1)(-1)ss ×× mm ×× BBee

s s – – sinalsinal mm – – mantissamantissa BB – – base (implícita, não base (implícita, não

representada)representada) ee – – expoenteexpoente

Page 8: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)

O formato de precisão simples (O formato de precisão simples (floatfloat) ocupa ) ocupa 32 32 bitsbits..

O formato de precisão dupla (O formato de precisão dupla (doubledouble) ocupa ) ocupa 64 64 bitsbits..

23 bits8 bits1 bit

fraçãoexpoentesinal

52 bits11 bits1 bit

fraçãoexpoentesinal

Page 9: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

O bit mais à esquerda guarda o sinal do O bit mais à esquerda guarda o sinal do número:número: bit = 0 bit = 0 número positivo número positivo bit = 1bit = 1 número negativo número negativo

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Sinal:: SinalPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Sinal:: Sinal

Page 10: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Ponto flutuante (Padrão IEEE 754) Ponto flutuante (Padrão IEEE 754) :: Fração:: FraçãoPonto flutuante (Padrão IEEE 754) Ponto flutuante (Padrão IEEE 754) :: Fração:: Fração

A A mantissa mantissa é representada na forma é representada na forma normalizada (base binária):normalizada (base binária):

A A mantissamantissa é composta por: é composta por: Algarismo 1Algarismo 1 Ponto de separaçãoPonto de separação FraçãoFração

321.1 bbb

Page 11: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

O algarismo 1 e o ponto de numeração O algarismo 1 e o ponto de numeração não não precisam ser armazenadosprecisam ser armazenados, pois são os mesmos , pois são os mesmos para todos os números reais representados.para todos os números reais representados.

Caso a fração possua menos bits que o esperado, Caso a fração possua menos bits que o esperado, zeros devem ser colocados zeros devem ser colocados à direitaà direita, pois não , pois não têm significância.têm significância.

11001100000000000000000

23 bits

fração

fração = 1,110011

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: FraçãoPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: Fração

Page 12: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: FraçãoPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: Fração

Por razões históricas, o co-processador de ponto Por razões históricas, o co-processador de ponto flutuante Intel flutuante Intel não utiliza parte inteira implícitanão utiliza parte inteira implícita, , ou seja, a parte inteira também é representada ou seja, a parte inteira também é representada juntamente com a fração.juntamente com a fração.

O formato de precisão O formato de precisão estendidaestendida ocupa ocupa 80 bits80 bits..

64 bits15 bits1 bit

mantissaexpoentesinal

Page 13: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Expoente:: ExpoentePonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Expoente:: Expoente

O expoente é representado na O expoente é representado na notação notação deslocadadeslocada, ou excesso de N, ou excesso de N

Maior expoente representável: Maior expoente representável: 22n-1n-1

Representado por: Representado por: 11...1111...11

Menor expoente representável: Menor expoente representável: -(2-(2n-1n-1 - 1) - 1) Representado por: Representado por: 00...0000...00

Page 14: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

DecimalDecimal Complemento Complemento de doisde dois

Notação Notação excesso de excesso de

NN

+4+4 ---- 111111

+3+3 011011 110110

+2+2 010010 101101

+1+1 001001 100100

00 000000 011011

-1-1 111111 010010

-2-2 110110 001001

-3-3 101101 000000

-4-4 100100 ----

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação excesso de N:: Notação excesso de NPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação excesso de N:: Notação excesso de N

Page 15: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação deslocada:: Notação deslocadaPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação deslocada:: Notação deslocada

Representação do valor Representação do valor zerozero: : 01...1101...11..

Representação do valor Representação do valor umum: : 10...0010...00..

Demais valores: Demais valores: somar ao zero somar ao zero (deslocamento)(deslocamento)..

Page 16: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Exemplo:Exemplo:

(10)(10)binbin = +1.0 = +1.0 × 2× 211

0

1 bit

sinal

0000 0000 0000 0000 0000 000

23 bits

fração1000 0000

8 bits

expoente

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)

Page 17: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Mais exemplos:Mais exemplos:

Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)

fração fração em em

bináriobinárioexpoente expoente não não sinalizadosinalizado

floatfloat fração fração em em decimaldecimal

expoente expoente decimaldecimal

Page 18: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

00 223131 - 1 - 1-2-23131

Inteiros representados

00- (1 - 2- (1 - 2-24-24) ) × 2× 2128128

underflow positivo

- - 22-127-127 22-127-127 (1 - 2(1 - 2-24-24) ) × 2× 2128128

underflow

negativonúmeros

representados

números representad

os

overflow positivo

overflow negativo

Ponto flutuante Ponto flutuante × × Ponto fixoPonto fixo:: Faixa de números representados:: Faixa de números representadosPonto flutuante Ponto flutuante × × Ponto fixoPonto fixo:: Faixa de números representados:: Faixa de números representados

Page 19: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

0 00000000

0000000000000000000000fraçãoexpoentesinal

1 00000000

0000000000000000000000fraçãoexpoentesinal

+ 0+ 0

– – 00

Ponto flutuantePonto flutuante:: Zero:: ZeroPonto flutuantePonto flutuante:: Zero:: Zero

Como representar o Como representar o zerozero em ponto em ponto flutuante?flutuante? Adota-se uma convenção.Adota-se uma convenção.

Page 20: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

0 11111111

0000000000000000000000fraçãoexpoentesinal +∞

1 11111111

0000000000000000000000fraçãoexpoentesinal -∞

Ponto flutuantePonto flutuante:: Infinito:: InfinitoPonto flutuantePonto flutuante:: Infinito:: Infinito

Notação especial para representar Notação especial para representar eventos incomunseventos incomuns:: permite que os programas possam manipulá-permite que os programas possam manipulá-

los sem que sejam interrompidos.los sem que sejam interrompidos.

Page 21: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

x 11111111

xxx...xx ≠ 0fraçãoexpoentesinal

Ponto flutuantePonto flutuante:: NaN – Not a Number:: NaN – Not a NumberPonto flutuantePonto flutuante:: NaN – Not a Number:: NaN – Not a Number

É uma representação do resultado de É uma representação do resultado de operações inválidas, tais como:operações inválidas, tais como: 0/00/0 ∞ ∞ - ∞- ∞ ∞∞/∞/∞ 0 0 × ∞× ∞ √√x, x < 0x, x < 0

Page 22: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Código ASCII (texto)Código ASCII (texto)Código ASCII (texto)Código ASCII (texto)

ASCII ASCII AAmerican merican SStandard tandard CCode for ode for IInformation nformation

IInterchangenterchange A primeira versão foi criada em 1963 para A primeira versão foi criada em 1963 para

normalizar a transmissão e armazenamento de normalizar a transmissão e armazenamento de texto. texto.

Em 1967 foram incluídas as letras minúsculas Em 1967 foram incluídas as letras minúsculas no código, que essencialmente permaneceu no código, que essencialmente permaneceu inalterado até nossos dias.inalterado até nossos dias.

Page 23: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

32 48 0 64 @ 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 < 76 L 92 \ 108 l 124 |

45 - 61 = 77 M 93 ] 109 m 125 }

46 . 62 > 78 N 94 ^ 110 n 126 ~

47 / 63 ? 79 O 95 _ 111 o 127 DEL

Código ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCII

Page 24: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

UNICODEUNICODEUNICODEUNICODE

O código ASCII possui a grande O código ASCII possui a grande desvantagemdesvantagem de apenas permitir a de apenas permitir a representação de 2representação de 288=256 símbolos =256 símbolos diferentes.diferentes.

O código UNICODE pretende normalizar a O código UNICODE pretende normalizar a codificação dos caracteres utilizados em codificação dos caracteres utilizados em todas as escritas do mundo. todas as escritas do mundo.

Utiliza 16 bits para codificar cada caracter Utiliza 16 bits para codificar cada caracter e encontra-se disponível nos sistemas e encontra-se disponível nos sistemas informáticos mais recentes.informáticos mais recentes.

Mais informações em Mais informações em http://www.unicode.org

Page 25: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

Para saber mais...Para saber mais...Para saber mais...Para saber mais...

William Stallings. William Stallings. Computer Organization and Computer Organization and Architecture: Designing for PerformanceArchitecture: Designing for Performance. 7th Ed. . 7th Ed. Prentice Hall, 2005. Prentice Hall, 2005. Cap. 09Cap. 09..

Patterson & Hennessy. Patterson & Hennessy. Organização e Projeto de Organização e Projeto de Computadores (Interface HW/SW)Computadores (Interface HW/SW). . Cap. 3Cap. 3..

Sivarama P. Dandamudi. Sivarama P. Dandamudi. Guide to Assembly Guide to Assembly Language Programming in LinuxLanguage Programming in Linux. Springer, 2005. . Springer, 2005. Cap. 22Cap. 22..

Kip R. Irvine. Kip R. Irvine. Assembly Language For Intel-Based Assembly Language For Intel-Based ComputersComputers. 5th Edition. Prentice Hall, 2006. . 5th Edition. Prentice Hall, 2006. Cap. Cap. 1717..

Page 26: Sistemas de Computação Prof. MSc. Leandro Galvão galvao@dcc.ufam.edu.br dcc_oc.html Aritmética Computacional -Ponto Flutuante – Material

QuestõesQuestõesQuestõesQuestões