DCC008 Aula03 Numero Erro

108 

Full text

(1)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de N´umeros e No¸c˜oes B´asicas

de Erro

DCC008 - C´alculo Num´erico

Departamento de Ciˆencia da Computa¸c˜ao Universidade Federal de Juiz de Fora

(2)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(3)

Num´erico -UFJF Introdu¸c˜ao

Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(4)

Num´erico -UFJF Introdu¸c˜ao

Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Introdu¸c˜ao

• O objetivo aqui ´e estudar m´etodos num´ericos

• Logo, ´e importante entender como os n´umeros s˜ao representados no computador e como as opera¸c˜oes aritm´eticas s˜ao realizadas

• Limita¸c˜oes da representa¸c˜ao finita

(5)

Num´erico -UFJF Introdu¸c˜ao

Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Introdu¸c˜ao

• O objetivo aqui ´e estudar m´etodos num´ericos

• Logo, ´e importante entender como os n´umeros s˜ao representados no computador e como as opera¸c˜oes aritm´eticas s˜ao realizadas

• Limita¸c˜oes da representa¸c˜ao finita

• Determinar os casos em que erros ocorrem • No¸c˜oes de erro

(6)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(7)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Decimal

• O sistema decimal ´e normalmente adotado

• Dez d´ıgitos s˜ao utilizados para representar os n´umeros • base 10

• Qualquer n´umero inteiro no sistema decimal pode ser representado como

N = (anan−1. . .a1a0)10

=an×10n+an−1×10 n−1

+· · ·+a1×101+a0×100

(8)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Decimal

• Por exemplo

(9)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Decimal

• Por exemplo

(21)10= 2×101+ 1×100

(10)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Bin´ario

• Os computadores adotam um sistema com dois estados

(ligado ou desligado)

• Sistema bin´ario

• base 2

• Os n´umeros n˜ao negativos podem ser representados como

N= (anan−1. . .a1a0)2

=an×2 n

+an−1×2 n−1

+· · ·+a1×21+a0×20

(11)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Bin´ario

• Por exemplo

(12)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Bin´ario

• Por exemplo

(101)2 = 1×22+ 0×21+ 1×20

(13)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Hexadecimal

• O sistema hexadecimal ´e uma alternativa ao sistema bin´ario para simplificar a representa¸c˜ao valores grandes

• Base 16

• D´ıgitos:

(14)

Num´erico -UFJF

Introdu¸c˜ao

Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Hexadecimal

• O sistema hexadecimal ´e uma alternativa ao sistema bin´ario para simplificar a representa¸c˜ao valores grandes

• Base 16

• D´ıgitos:

• {0,1, . . . ,8,9,A,B,C,D,E,F}

• Exemplo

(A00E)16= A×163+ 0×162+ 0×161+ E×160

(15)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao

Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(16)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao de Bases

• Um n´umero na baseβ pode ser convertido para base decimal como

(N)10=an×βn+an−1×β n−1

+· · ·+a1×β1+a0×β0,

(17)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao de Bases

• Converter (1010)2 para base 10

(1010)2 = 1×23+ 0×22+ 1×21+ 0×20

(18)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao de Bases

• Converter (1010)2 para base 10

(1010)2 = 1×23+ 0×22+ 1×21+ 0×20

= 8 + 2 = (1010)2 = (10)10

• Converter (1C2)16 para base 10

(1C2)16= 1×162+C ×161+ 2×160

= 1×162+ 12×161+ 2×160 = 256 + 192 + 2

(19)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcios

Exerc´ıcio

Converter os seguintes n´umeros para a base 10

a) Converter (1101)2 para base 10.

(20)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcios

Exerc´ıcio

Converter os seguintes n´umeros para a base 10

a) Converter (1101)2 para base 10.

b) Converter (3F)16 para base 10.

Solu¸c˜ao

Converter os seguintes n´umeros para a base 10

a) 13

(21)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao decimal para bin´ario

O procedimento ´e dividir o n´umero por 2, a seguir continuar dividindo o quociente por 2, at´e que o quociente seja igual a 0. O n´umero na base 2 ´e obtido tomando-se o resto das divis˜oes anteriores.

Exemplo

(22)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao decimal para bin´ario

O procedimento ´e dividir o n´umero por 2, a seguir continuar dividindo o quociente por 2, at´e que o quociente seja igual a 0. O n´umero na base 2 ´e obtido tomando-se o resto das divis˜oes anteriores.

Exemplo

Converter (13)10 para bin´ario.

Solu¸c˜ao

13÷2 = 6, resto=1

6÷2 = 3, resto=0

3÷2 = 1, resto=1

1÷2 = 0, resto=1

(23)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao decimal para

hexadecimal

O procedimento ´e dividir o n´umero por 16, a seguir continuar dividindo o quociente por 16, at´e que o quociente seja igual a 0. O n´umero na base 16 ´e obtido tomando-se o resto das divis˜oes anteriores.

Exemplo

(24)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao decimal para

hexadecimal

O procedimento ´e dividir o n´umero por 16, a seguir continuar dividindo o quociente por 16, at´e que o quociente seja igual a 0. O n´umero na base 16 ´e obtido tomando-se o resto das divis˜oes anteriores.

Exemplo

Converter (62)10 para hexadecimal.

Solu¸c˜ao

62÷16 = 3, resto=14 = E

3÷16 = 0, resto=3

(25)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcio

Converter os seguintes n´umeros para a base indicada

a) Converter (23)10 para base 2.

b) Converter (14)10 para base 2.

c) Converter (63)10 para base 16.

(26)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcio

Converter os seguintes n´umeros para a base indicada

a) Converter (23)10 para base 2.

b) Converter (14)10 para base 2.

c) Converter (63)10 para base 16.

d) Converter (945)10 para base 16.

Solu¸c˜ao

a) (10111)2

b) (1110)2

c) (3F)16

(27)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema Bin´ario para Hexadecimal

Bin´ario Hexadecimal Bin´ario Hexadecimal

0000 0 1000 8

0001 1 1001 9

0010 2 1010 A

0011 3 1011 B

0100 4 1100 C

0101 5 1101 D

0110 6 1110 E

0111 7 1111 F

Exemplo: (111011010010)2 ⇔

E z }| {

1110

D z }| {

1101

2 z }| {

(28)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcios

Exerc´ıcio

Realizar as seguintes convers˜oes

a) Converter (11001011)2 para base 16.

b) Converter (110010111)2 para base 16.

c) Converter (3F)16 para base 2.

(29)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcios

Exerc´ıcio

Realizar as seguintes convers˜oes

a) Converter (11001011)2 para base 16.

b) Converter (110010111)2 para base 16.

c) Converter (3F)16 para base 2.

d) Converter (7BC)16 para base 2.

Solu¸c˜ao

a) (CB)16

b) (197)16

c) (111111)2

(30)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de um n´umero real

• Um n´umero real positivo x pode ser escrito como

x =

n X

i=0

aiBi

| {z } xint

+

∞ X

i=1

biB −i

| {z } xfrac

onde ai e bi s˜ao, respectivamente, os coeficientes da parte

integral e fracion´aria do n´umero x • Por exemplo,

(23,45)10= 2×101+ 3×100+ 4×10 −1

(31)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exemplos: Representa¸c˜ao de um

n´umero real

• Se bi = 0 para todoi maior que um valor inteiro, ent˜ao

diz-se que a fra¸c˜ao termina

• Caso contr´ario, diz-se que a fra¸c˜ao n˜ao termina

• Exemplos:

0,45 = 4×10−1+ 5×10−2 termina

0,666. . .= 6×10

−1+ 6×10−2+ 6×10−3+

(32)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao de real para bin´ario

• De forma an´aloga para o sistema bin´ario podemos escrever

xf = ∞ X

k=1 bk2

−k

, xi = (anan−1. . .a0)2

ent˜aox = (anan−1. . .a0·b1b2b2. . .)2.

• A fra¸c˜ao bin´aria (·b1b2b2. . .)2 para um dadoxf entre 0 e

1 pode ser calculada da seguinte forma: dado x entre 0 e 1, gere b1,b2,b3 fazendo:

c0 =x

b1 = (2·c0)i, c1 = (2·c0)f

b2 = (2·c1)i, c2 = (2·c1)f

b3 = (2·c2)i, c3 = (2·c2)f, . . .

onde (.)i representa a parte integral e (.)f a parte

(33)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao de real para bin´ario

Exemplo

Qual a representa¸c˜ao bin´aria de (0.625)10?

Solu¸c˜ao do Exemplo

2·0.625 = 1.25 b1 = 1 2·0.25 = 0.50 b2 = 0

2·0.5 = 1.00 b3 = 1

2·0.0 = 0.00 b4 =b5=. . .= 0

(34)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao de real para bin´ario

Exemplo

Qual a representa¸c˜ao bin´aria de (0.1)10?

Solu¸c˜ao do Exemplo 2

Temosx = 0.1.

2·0.1 = 0.2 b1 = 0 2·0.2 = 0.4 b2 = 0

2·0.4 = 0.8 b3 = 0

2·0.8 = 1.6 b4 = 1

2·0.6 = 1.2 b5 = 1

2·0.2 = 0.4 b6 = 0 2·0.4 = 0.8 . . .

(35)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Convers˜ao da base 2 para 10

Exemplo

Converter da base 2 para a base 10.

(11.0101)2= 1∗20+ 1∗21+ 0∗2−1+ 1∗2−2+ 0∗2−3+ 1∗2−4

(36)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcio

Converter os seguintes n´umeros reais

a) (7.25)10 para base 2

b) (3.25)10 para base 2

c) (101.01)2 para base 10

(37)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro

N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcio

Converter os seguintes n´umeros reais

a) (7.25)10 para base 2

b) (3.25)10 para base 2

c) (101.01)2 para base 10

d) (11.1)2 para base 10

Exerc´ıcio

a) (111.01)2

b) (11.01)2

c) (5.25)10

(38)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(39)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de n´umeros inteiros

• Para n´umero n˜ao negativos, a representa¸c˜ao ´e direta

(40)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de n´umeros inteiros

• Para n´umero n˜ao negativos, a representa¸c˜ao ´e direta

33 0 0 1 0 0 0 0 1

• Para n´umero inteiros com sinal, uma possibilidade ´e reservar 1 bit para indicar o sinal

• 0⇒positivo • 1⇒negativo

(41)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de n´umeros inteiros

Inteiros s˜ao armazenados usando uma palavra de 32 bits no computador.

• Se estamos interessados em n´umerosn˜ao negativos, a representa¸c˜ao ´e simples:

(71)10⇒

00000000 00000000 00000000 01000111

(42)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de n´umeros inteiros

Inteiros s˜ao armazenados usando uma palavra de 32 bits no computador.

• Se estamos interessados em n´umerosn˜ao negativos, a representa¸c˜ao ´e simples:

(71)10⇒

00000000 00000000 00000000 01000111

Os valores que podemos representar v˜ao de 0 a 2321. • Para n´umeros inteiros com sinal, uma possibilidade, ´e

reservar 1 bit para indicar qual o sinal do n´umero.

(71)10⇒

1|0000000 00000000 00000000 01000111

(43)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de n´umeros inteiros

Qual a diferen¸ca?

1|0000000 00000000 00000000 00000000

e

(44)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Complemento a dois

• O complemento a dois ´e outra forma de representar n´umeros inteiros com sinal

• O bit mais significativo ainda ´e utilizado para o sinal

• Os n´umeros positivos s˜ao representados normalmente

• Um n´umero negativo y ´e representado pelo n´umero bin´ario correspondente ao inteiro positivo:

2B y

(45)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exemplo: Complemento a dois

Para ilustrar considere uma palavra de 4 bits. Podemos representar os seguintes n´umeros de 0 a 7 e de -8 a -1. Veja a tabela.

bits n´umero bits n´umero 2B

−y

0000 0 1000 -8 248 = 8

0001 1 1001 -7 247 = 9

0010 2 1010 -6 246 = 10

0011 3 1011 -5 245 = 11

0100 4 1100 -4 244 = 12

0101 5 1101 -3 243 = 13

0110 6 1110 -2 242 = 14

0111 7 1111 -1 241 = 15

Para negar um n´umero em complemento a dois, use o seguinte algoritmo:

(46)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exemplo: Complemento a dois

Exemplo

(47)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exemplo: Complemento a dois

Exemplo

Considere uma palavra de 4 bits. Qual a representa¸c˜ao em complemento a dois de2?

Solu¸c˜ao do exemplo

Temos que (2)10= (0010)2. Pelos passos do algoritmo temos:

1 Invertendo os bits 0010→1101

2 Somando 1

1101 +0001

1110

Ou seja,2 ´e representado por 242 = 162 = 14, cuja

(48)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Complemento a dois

• Complemento a dois

• Uma vantagem desse sistema ´e n˜ao requerer umhardware espec´ıfico para o operador de subtra¸c˜ao

• O operador de soma pode ser utilizado quando um n´umero negativo ´e representado em complemento a dois

(49)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exemplo: Complemento a dois

Exemplo

(50)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exemplo: Complemento a dois

Exemplo

Considerando uma m´aquina que utiliza 4 bits para representar n´umeros inteiros com sinal e adotando complemento a dois. Converta em complemento a 2 e realize a opera¸c˜ao 43.

Solu¸c˜ao do exemplo

Ao converter obtemos (4)10= (0100)2 e (−3)10= (1101)2.

Portanto

0100 +1101

0001

(51)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcios

Considere uma palavra de 4 bits. Qual a representa¸c˜ao em complemento a dois dos seguintes n´umeros em bin´ario e decimal?

a) (7)10

b) (6)10

c) (4)10

(52)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcios

Considere uma palavra de 4 bits. Qual a representa¸c˜ao em complemento a dois dos seguintes n´umeros em bin´ario e decimal?

a) (7)10

b) (6)10

c) (4)10

d) Realiza a conta 74 utilizando os resultados obtidos nas letras anteriores

Solu¸c˜ao

a) (7)10 =⇒ (0111)2= (7)10

b) (6)10 =⇒ (1010)2 = (10)10

c) (4)10 =⇒ (1100)2 = (12)10

(53)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao de n´umeros reais

• N´umeros reais s˜ao armazenados usando o sistema bin´ario e a representa¸c˜ao destes n´umeros ´e finita.

• Por exemplo, os n´umeros

π= 3.1415. . .

e = 2.71828. . .

n˜ao podem ser representados perfeitamente no

computador. O que ´e armazenado ent˜ao ´e uma vers˜ao aproximada destes n´umeros.

• De forma geral, existem duas possibilidades para essa representa¸c˜ao:

• Representa¸c˜ao em Ponto Fixo

(54)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto fixo

• Neste sistema uma palavra (n´umero) ´e representada por 3 campos

• 1 bit para o sinal

(55)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto fixo

• Neste sistema uma palavra (n´umero) ´e representada por 3 campos

• 1 bit para o sinal

• bits que formam a parte integral • bits que formam a parte fracion´aria

• Por exemplo, o n´umero (12,75)10 pode ser representado

em um sistema com 32 bits (15 bits para a parte integral e 16 bits para a parte fracion´aria) como

(56)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto fixo

• Neste sistema uma palavra (n´umero) ´e representada por 3 campos

• 1 bit para o sinal

• bits que formam a parte integral • bits que formam a parte fracion´aria

• Por exemplo, o n´umero (12,75)10 pode ser representado

em um sistema com 32 bits (15 bits para a parte integral e 16 bits para a parte fracion´aria) como

0 000000000001100 11000000000000000

• O sistema de ponto fixo limita muito a magnitude dos n´umeros que podem ser representados

(57)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

• A representa¸c˜ao de ponto flutuante ´e baseada na nota¸c˜ao cient´ıfica. Nessa nota¸c˜ao um n´umero real n˜ao-zero ´e expresso por

x =±d×βe

onde β ´e a base do sistema de numera¸c˜ao,d ´e a mantissa e e´e o expoente.

• A mantissa ´e um n´umero da forma

(0·d1d2d3. . .dt)β

representada por t d´ıgitos, onde 0di ≤(β−1), para

i = 1, . . . ,t com d1 6= 0.

• O expoentee est´a no intervalo [L,U].

• Ao exigir qued16= 0, dizemos que o n´umero est´a

(58)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Sistema de ponto flutuante

Iremos denotar um sistema de ponto flutuante por

F(β,t,L,U)

onde

• β ´e a base do sistema

• t n´umero de d´ıgitos da mantissa

• L menor valor para o expoente

• U maior valor para o expoente

Em qualquer m´aquina apenas um subconjunto dos n´umeros reais ´e representado exatamente, e portanto nesse processo a representa¸c˜ao de um n´umero real ser´a feita com

(59)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Arredondamento em ponto

flutuante

• Imagine que s´o dispomos de quatro d´ıgitos para

representar os n´umeros em uma m´aquina. Como seria a melhor forma de representar 157 = 2.142857 =x? Usando 2.142 ou talvez 2.143?

• Se calcularmos o erro vemos que

|2.142x|= 0.000857

|2.143x|= 0.000143

Como o erro ´e menor para 2.143 conclu´ımos que essa ´e a melhor forma de representar esse n´umero. Este n´umero foi arredondado.

O que significa arredondar um n´umero?

(60)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,3,3). Como fica representado neste sistema o n´umero 12.5?

Solu¸c˜ao

(61)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,3,3). Como fica o n´umero de Euler e= 2.718281. . .

Solu¸c˜ao

(62)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

Exemplo

• Considere o seguinte sistema: F(10,3,5,5). Os n´umeros representados neste sistema ter˜ao a forma

±(0.d1d2d3)×10e, 0di ≤9, d1 6= 0, e ∈[−5,5]

• O menor n´umero em valor absoluto representado nessa m´aquina ´e

m= 0.100×10−5

= 10−1

×10−5

= 10−6

• O maior n´umero em valor absoluto ´e

M = 0.999×105= 99900

De forma geral, o menor e o maior n´umero s˜ao dados por

m=βL−1

, M =βU(1β−t

(63)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

• Seja um sistema F(β,t,L,U) onde o menor e maior n´umero s˜ao denotados por me M, respectivamente. Dado um n´umero realx, ent˜ao temos as seguintes situa¸c˜oes:

1 m≤ |x| ≤M

O n´umeropodeser representado no sistema. Exemplo: 235.89 = 0.23589×103. No sistema F(10,3,−3,3) temos

0.235×103com truncamento 0.236×103com arredondamento

2 |x| ≤m

O n´umeron˜ao podeser representado no sistema. Neste caso dizemos que ocorreuunderflow. Ex: 0.517×10−8.

3 |x| ≥M

(64)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,3,3). Para simplificar, considere uma palavra com 7 bits, onde temos 1 bit para o sinal do n´umero, 3 bits para o expoente (incluindo seu sinal) e 3 bits para a mantissa. Vamos representarxmin= (0.100)2×2−3.

sinal do n´umero 0

sinal do expoente 1

expoente (3)10= (11)2

mantissa (0.100)2

Sendo assim temos a seguinte representa¸c˜ao para (0.0625)10

neste sistema

(65)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,1,2). Quantos e quais n´umeros podem ser representados neste sistema?

Solu¸c˜ao:

Neste sistema os n´umeros s˜ao da forma: ±0.d1d2d3×2e • 2 possibilidades para o sinal

• (1·2·2) = 4 possibilidades para a mantissa

(66)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Representa¸c˜ao em ponto flutuante

Continua¸c˜ao da solu¸c˜ao

Para responder quais s˜ao os n´umeros, notemos que as poss´ıveis formas da mantissa s˜ao 0.100, 0.101, 0.110 e 0.111 e as formas do expoente s˜ao 2−1

, 20, 21 e 22. Assim obtemos:

(0.100)2×2−1 = (0.25)10 (0.101)2×2−1 = (0.3125)10

(0.100)2×20 = (0.5)10 (0.101)2×20 = (0.625)10

(0.100)2×21 = (1.0)10 (0.101)2×21 = (1.25)10

(0.100)2×22 = (2.0)10 (0.101)2×22 = (2.5)10

(0.110)2×2−1 = (0.375)10 (0.111)2×2−1 = (0.4375)10

(0.110)2×20 = (0.75)10 (0.111)2×20 = (0.875)10

(0.110)2×21 = (1.5)10 (0.111)2×21 = (1.75)10

(0.110)2×22 = (3.0)10 (0.111)2×22 = (3.5)10

O zero ´e representado de uma forma especial: todos os d´ıgitos

(67)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Exerc´ıcio

Exerc´ıcio

Seja uma m´aquina fict´ıcia que opera em um sistema de ponto flutuante de base bin´aria e que representa os n´umeros usando 32 bits. Seja o seguinte n´umero representado nesta m´aquina:

0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0

Se o primeiro bit indica o sinal do n´umero, o segundo ´e o sinal do expoente, os pr´oximos seis s˜ao o expoente, e os vinte e quatro ´ultimos s˜ao a mantissa, responda `as seguintes perguntas:

a) O n´umero est´a normalizado? Se n˜ao, normalize-o.

b) O n´umero ´e positivo ou negativo?

c) Em m´odulo, o n´umero ´e menor ou maior do que 1?

(68)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Ponto flutuante IEEE 754

• O padr˜ao usa o sistema bin´ario e dois formatos para representa¸c˜ao de n´umeros podem ser adotados: precis˜ao

simples eprecis˜ao dupla. Neste formato um n´umero ´e

representado de forma normalizadapor

±1.d1d2. . .dn×2e

• Em precis˜ao simples um n´umero real ´e representado por 32 bits, sendo que:

• 1 bit para o sinal • 8 bits para o expoente • 23 bits para a mantissa • formato bin´ario

± e1e2. . .e8 d1d2. . .d23

• O primeiro bit `a esquerda do ponto bin´ario, isto ´ed0 = 1,

(69)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Expoente

• Nesse formato, o expoente n˜ao ´e representado como um inteiro via complemento a dois. Os oito bits do expoente armazenam o n´umero s =e+ 127.

• Exemplos:

e= 1 s = 1 + 127 = (128)10= (10000000)2

e=3 s =3 + 127 = (124)10= (01111100)2

e= 52 s = 52 + 127 = (179)10= (10110011)2

• Em particular as sequˆencias de bits (00000000) e

(70)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Mantissa

• Como o sistema ´e normalizado temosd0 6= 0. Dado que a

base ´e dois, a ´unica possibilidade para o primeiro d´ıgito ser´a sempre igual a 1, e portanto este bit n˜ao precisa ser armazenado, por isso ´e chamado de bit escondido.

• Com o uso desta normaliza¸c˜ao temos um ganho na precis˜ao, pois a mantissa passa a ser representada com 24 bits (23 + 1 bit escondido).

• Exemplo: (0.125)10= (0.001)2 = 1.0×2−3 ´e armazenado

como:

0 01111100 0000000 00000000 00000000

(71)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros

Reais

Opera¸c˜oes aritm´eticas em ponto flutuante No¸c˜oes b´asicas sobre erros

Ponto flutuante IEEE 754

• O zero ´e representado com zeros para expoente e mantissa

0 00000000 0000000 00000000 00000000

• Os valores + e −∞s˜ao representados por

0 11111111 0000000 00000000 00000000

1 11111111 0000000 00000000 00000000

• Se a sequˆencia de bits para o expoente for composta por todos d´ıgitos iguais a um e a da mantissa for n˜ao nula, isto ´e:

1 11111111 xxxxxxx xxxxxxxx xxxxxxxx

temos a ocorrˆencia de NaN: Not a Number, que representam express˜oes inv´alidas como:

(72)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(73)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

• Adi¸c˜ao/subtra¸c˜ao: quando dois n´umeros em ponto

flutuante s˜ao somados (ou subtra´ıdos), ´e preciso alinhar as casas decimais do n´umero de menor expoente para a direita at´e que os expoentes fiquem iguais.

(74)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

• Adi¸c˜ao/subtra¸c˜ao: quando dois n´umeros em ponto

flutuante s˜ao somados (ou subtra´ıdos), ´e preciso alinhar as casas decimais do n´umero de menor expoente para a direita at´e que os expoentes fiquem iguais.

• Os resultados devem ser truncados ou arredondados dependendo da maquina

Exemplo

Seja uma maquina utilizandoF(10,2,5,5) realize a opera¸c˜ao: 0,12×101+ 0,5×10−1

0,12×101+ 0,005×101

(75)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

• Multiplica¸c˜ao/divis˜ao: nessa opera¸c˜ao realizamos o

produto (ou divis˜ao) das mantissas e o expoente final da base ´e obtido, somando (subtraindo) os expoentes de cada parcela.

(76)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

• Multiplica¸c˜ao/divis˜ao: nessa opera¸c˜ao realizamos o

produto (ou divis˜ao) das mantissas e o expoente final da base ´e obtido, somando (subtraindo) os expoentes de cada parcela.

• Os resultados devem ser truncados ou arredondados dependendo da maquina

Exemplo

Seja uma maquina utilizandoF(10,2,5,5) realize a opera¸c˜ao: 0,53×102×0,2×10−1

(77)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Adi¸c˜ao

(78)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Adi¸c˜ao

Adicionar 4.32 e 0.064 em uma m´aquina com mantissa t = 2 e base 10.

Solu¸c˜ao

4.32 + 0.064 = 0.43×101+ 0.64×10−1

= 0.4300×101

+ 0.0064×101 = 0.4364×101

Truncamento 0.43×101

(79)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Subtra¸c˜ao

(80)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Subtra¸c˜ao

Subtrair 371 de 372 em uma m´aquina com mantissat = 2 e base 10.

Solu¸c˜ao

372371 = 0.37×103+ 0.37×103 = 0.37×103

(81)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Subtra¸c˜ao

Subtrair 371 de 372 em uma m´aquina com mantissat = 2 e base 10.

Solu¸c˜ao

372371 = 0.37×103+ 0.37×103 = 0.37×103

−0.37×103 = 0.00×103

A subtra¸c˜ao deu 0 em vez de 1. Problema na subtra¸c˜ao

(82)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Multiplica¸c˜ao

Multiplicar 1234 por 0.016 em uma m´aquina com mantissa

(83)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Multiplica¸c˜ao

Multiplicar 1234 por 0.016 em uma m´aquina com mantissa

t= 2 e base 10.

Solu¸c˜ao

12340.016 = 0.12×1040.16×10−1

= 0.12×104

∗0.16×10−1

= 0.0192×103 = 0.19×102

(84)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Divis˜ao

(85)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas

Exemplo: Divis˜ao

Dividir 0.00183 por 492 em uma m´aquina com mantissa t= 2 e base 10.

Solu¸c˜ao

0.00183÷492 = 0.18×10−2

÷0.49×103 = 0.18×10−2

÷0.49×103 = 0.3673×10−5

Arredondamento0.37×10−5

(86)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

´

E importante observar que algumas propriedades aritm´eticas como

associatividade: (a+b) +c =a+ (b+c) distributividade: a(b+c) =ab+ac

(87)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Exemplo

Exemplo

Considere um sistema com baseβ e trˆes d´ıgitos na mantissa, ou seja,F(10,3,L,U). Considere ainda que o sistema trabalha com arredondamento ap´os cada uma das opera¸c˜oes efetuadas.

a) (11.4 + 3.18) + 5.05 e 11.4 + (3.18 + 5.05)

(88)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

Solu¸c˜ao do Exemplo

a) (11.4 + 3.18) + 5.05

0.1140×102 + 0.0318×102 = 0.1458×102 = 0.146×102 (arr.)

0.1460×102 + 0.0505×102 = 0.1965×102 =0.197×102 (arr.)

a) 11.4 + (3.18 + 5.05)

0.318×101 + 0.505×101 = 0.823×101

(89)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Opera¸c˜oes aritm´eticas em ponto

flutuante

Solu¸c˜ao do Exemplo (cont.)

b) 5.55(4.454.35)

0.445×101

−0.435×101 = 0.010×101 0.555×101

∗0.100×100 = 0.055500×101 =0.555

b) 5.554.455.554.35

0.555×101 ∗0.445×101 = 0.246975×102 = 0.247×102

0.555×101 ∗0.435×101 = 0.241425×102 = 0.241×102

(90)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Exerc´ıcios

Exerc´ıcios

1 Seja um sistema de aritm´etica de ponto flutuante de

quatro d´ıgitos na mantissa, base decimal e que usa o arredondamento. Dados os n´umeros:

x= 0.9370×104 y = 0.1272×102

efetue as opera¸c˜oes: x+y e x×y.

2 Sejam os seguintes n´umeros x = 0.5289, y = 0.8012 e z =

0.6024, e considere um sistema de ponto flutuante com mantissa de 4 d´ıgitos e base decimal. Mostre que:

(91)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Conte´udo

1 Introdu¸c˜ao

2 Sistema de numera¸c˜ao

3 Convers˜ao de sistema de numera¸c˜ao

N´umero inteiro N´umero real

4 Representa¸c˜ao de n´umeros computador

Inteiros Reais

5 Opera¸c˜oes aritm´eticas em ponto flutuante

(92)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Erro absoluto

Se ˜x ´e uma aproxima¸c˜ao de x, o erro absoluto ´e definido por

EA(˜x) =|x|

Exemplo

Sejax= 1428.756. Em uma m´aquina com mantissat = 4, usando arredondamento e truncamento, respectivamente, temos

˜

xt = 0.1428×104 ⇒ EA( ˜xt) = 0.756×100

˜

(93)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Erro relativo

Erro relativo

O erro relativo ´e definido por

ER(˜x) = x−x˜ ˜

x =

EA(˜x) ˜

x

dado que ˜x6= 0.

Exemplos:

x1 = 1000.5, x˜1 = 1000.6

x2= 10.5, x˜2 = 10.6 EA( ˜xi) = 0.1,i = 1,2

ER( ˜x1) = 0.1

1000.6 ≈0.00009994 = 0.9994×10

−4

ER( ˜x2) = 0.1

10.6 ≈0.009433 = 0.9433×10

(94)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Erros

• Al´em dos erros causados pela representa¸c˜ao no

computador e pelas opera¸c˜oes aritm´eticas, existem certos efeitos num´ericos que contribuem para aumentar os erros introduzidos.

(95)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Exemplo: Somar ou subtrair um

n´umero pequeno e um grande

Para exemplificar considere um sistemaF(10,4,L,U).

Exemplo

Somar 0.1 e 5000.

0.1 + 5000 = 0.1000×100+ 0.5000×104 = 0.00001×104

+ 0.50000×104 = 0.50001×104

(96)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Cancelamento

Subtraimos dois n´umeros quase iguais, ou quando somamos n´umeros de sinais opostos mas de magnitudes semelhantes

Exemplo

Calcular√37√36 em uma m´aquina F(10,4,L,U) usando arredondamento.

Solu¸c˜ao do Exemplo

Para efeitos de compara¸c˜ao, apresentamos a resposta exata aqui:

37√36 = 6.082762536 = 0.08276253.

Nessa m´aquina temos

37 = 6.08276253 0.6083×101

(97)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Cancelamento

Solu¸c˜ao do Exemplo - (cont.) • Efetuando a subtra¸c˜ao temos

0.6083×101

−0.6000×101

(98)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Cancelamento

Solu¸c˜ao do Exemplo - (cont.) • Efetuando a subtra¸c˜ao temos

0.6083×101

−0.6000×101

= 0.0083×101 = 0.8300×10−1

• A resposta exata ´e 0.8277×10−1

→ perda de d´ıgitos significativos!

(99)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Cancelamento

Solu¸c˜ao do Exemplo - (cont.) • Efetuando a subtra¸c˜ao temos

0.6083×101

−0.6000×101

= 0.0083×101 = 0.8300×10−1

• A resposta exata ´e 0.8277×10−1

→ perda de d´ıgitos significativos!

• E poss´ıvel obter um resultado mais preciso? Sim, basta´ considerar que

x√y =√x√y(

x

+√y)

x+√y =

xy

(100)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Cancelamento

Solu¸c˜ao do Exemplo - (cont.)

Portanto para

37√36

temos

xy

x+√y =

3736

37 +√36 =

1

0.6083×101+ 0.6000×101

= 1

0.1208×102

= 0.08278145 = 0.8278×10−1

(101)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Propaga¸c˜ao do erro

Problemas num´ericos n˜ao ocorrem apenas quando dois n´umeros quase iguais s˜ao subtra´ıdos. Tamb´em ocorrem no c´alculo de uma soma, quando uma soma parcial ´e muito grande se comparada com o resultado final. Considere que:

s =

n X

k=1 ak

seja a soma a ser computada e que osak podem ser positivos

ou negativos e de diferentes magnitudes. O c´alculo ´e usualmente feito da seguinte forma:

s1=ak, sk =sk−1+ak, k = 2,3, . . . ,n

(102)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Propaga¸c˜ao do erro

Exemplo

Considere uma m´aquinaF(10,4,L,U) com truncamento. Vamos efetuar a seguinte opera¸c˜ao:

S =

4 X

i=1

(xi+yi) com xi = 0.46709, e yi = 3.5678

Parai = 1, temos

(x1+y1) = 0.4034×101

E o erro absoluto ´e

(103)

Num´erico -UFJF

Introdu¸c˜ao Sistema de numera¸c˜ao Convers˜ao de sistema de numera¸c˜ao N´umero inteiro N´umero real

Representa¸c˜ao de n´umeros computador

Inteiros Reais

Opera¸c˜oes aritm´eticas em ponto flutuante

No¸c˜oes b´asicas sobre erros

Propaga¸c˜ao do erro

Exemplo (cont.)

Parai = 2, temos

(x1+y1) + (x2+y2) = 0.8068×101 EA( ¯S) =|8.071388.068|= 0.00338

Parai = 3, temos

(x1+y1) + (x2+y2) + (x3+y3) = 0.1210×102 EA( ¯S) =|12.1070712.10|= 0.00707

Parai = 4, temos

(x1+y1) + (x2+y2) + (x3+y3) + (x4+y4) = 0.1613×102 EA( ¯S) =|16.1426716.13|= 0.01276

Figure

Updating...

References

Updating...

Download now (108 pages)