Está en la página 1de 20

Algoritmos

e Estrutura de Dados
em C/C++

Aula 4: Preciso Numrica em


Computadores
Prof. M.Sc. Avelino Forechi
www.forechi.com
Agenda
Tipos de erros
Nmeros binrios e decimais
Mudana de bases
Representao numrica
Exerccios

2
Tipos de Erros
1. Erros na modelagem: erros obtidos pelo uso de dados experimentais
errados ou pela prpria representao matemtica errada de um modelo
Jsico.
2. Erros de truncamento: o erro devido aproximao de uma frmula
por outra:

3. Erros de arredondamento: o erro causado pela imperfeio na


representao de um nmero.
Representao numrica
Como os nmeros so armazenados no computador. Por que 0 ou 1?

Transistores tem duas posies estveis: ligado ou desligado

Como seria a representao polinomial de 2016 na base decimal?

(2016)10 = 2x103 + 0x102 + 1x101 + 6x100

4
Representao de Ponto fixo x Ponto flutuante
Representao de ponto fixo

23231.333448
6732.222232
0.000023

Representao de ponto flutuante


.24234235 104 2423. 4235
.52423423 10-3 . 00052423423
.73836224 100 . 73836224

5
Representao de nmeros ponto flutuante
Um nmero R um nmero de ponto flutuante se

B = valor da base (geralmente 2, 8 , 10 ou 16)


dis = dgitos da parte fracionria (ou mantissa)
p = nmero de dgitos na mantissa (1 = 0; 0 1)
e = expoente inteiro

Um sistema numrico de ponto flutuante pode ser representado por:

F=F(B, p, e1, e2), onde e1 e e2 so o menor e maior expoentes.

#F = 2(B-1)(Bp-1)(e2-e1+1)+1, onde #F o nmero de elementos em F

6
Representao de nmeros ponto flutuante
Exemplo: F=F(10,5,-2,3)
F=F(B, p, e1, e2)
B=10, p=5, e1=-2, e2=3 (e=-2,-1,0,1,2,3)

Qual a representao de 13.415 nesse sistema?


13.415 em representao de ponto fixo
+.13415x102 em representao de ponto flutuante

Qual a representao de 161.018 nesse sistema?


161.018 truncamento: +.16101x103
arredondamento: +.16102x103

7
Representao de nmeros ponto flutuante
Exemplo: F=F(10,5,-2,3)

Qual o menor nmero em mdulo desse sistema?


|menor nmero| = +.10000x10-2 (0.001=10-3)

Qual o maior nmero em mdulo desse sistema?


|maior nmero| = +.99999x103 (999.99)

Qual o total de nmeros que podem ser armazenados nesse sistema?


#F = 2(B-1)(Bp-1)(e2-e1+1)+1
#F = 2(10-1)(104)(3+2+1)+1 = 1.080.001
-999.99 -10-3 0 +10-3 999.99

Regio de Regio de underflow Regio de


overflow overflow 8
Representao de nmeros binrios

0 x 2 +1 x 2 +0 x 2 +0 x 2 +1 x 2
4 3 2 1 0

9
Converso de bases numricas
Mudana de base: 2 10

(0.1101)2 = 1x2-1 + 1x2-2 + 0x2-3 + 1x2-4 = 1/2 + 1/4 + 1/16 = 13/16

(0.1x2-3)2 = (0.0001)2 = 1x2-4 = 1/16

(1.11x22)2 = (111.0)2 = 1x20 + 1x21 + 1x22 = 1 + 2 + 4 = 7

(11.001)2 = 1x21 + 1x20 + 0x2-1 + 0x2-2 + 1x2-3 = 2 + 1 + 1/8 = 25/8

10
Converso de bases numricas
Mudana de base: 10 2

21.78125
21 2
1 10 2
0 5 2
(21.)10 = (10101)2
1 2 2
0 1 2
1 0

(21.)
(21.)10 = (10101)
10 = (10101) 2 = = 1x2
2 = 1x2
4 + 0x2
4 + 0x2 3 + 1x232+ 1x2 + 0x201 + 1x20
+ 0x221 + 1x2

11
Converso de bases numricas
Mudana de base: 10 2
0.78125

21.78125 X 2
1.56250
X 2
1.12500
(.78125)10 = (11001)2 X 2
0.25000
X 2
0.50000
X 2
(.78125)10 = (11001)2
1.00000

12
Converso de bases numricas
Mudana de base: 10 2

21.78125

(21.)10 (.78125)10
(10101)2 (11001)2

21.78125 = 10101.11001 = +.1010111001x25

13
Nmeros ponto flutuante
Exemplo: F = F(2, 2, -1, 2) = F(B, p, e1, e2)
B=2, p=2, e1=-1, e2=2 (e = -1, 0, 1, 2)
#F = 2(B-1)(Bp-1)(e2-e1+1)+1
#F = 2(2-1)(21)(2+1+1)+1 = 17

0 3/8 1 3/2 2 3

Regio de overflow = , 3 (3, +)


Regio de underflow = (-, 0) U (0, )

14
Nmeros ponto flutuante
Exemplo: 0.6 = (0.100110011001...)2

Truncamento: (0.10)2 = 1/2 = 0.5

Erro de arredondamento = 0.1

Exemplo:
1/4 + 3/2 = 7/4 = 1.75
(0.10x2-1)2 + (0.11x21)2 = 0.001x21
+0.110x21
0.111x21

Truncamento: (0.11x21)2 = 3/2 = 1.5


Erro de arredondamento = 0.25

15
Representao de nmeros ponto flutuante
Formato IEEE 754

Proposto pela IEEE (Institute of Electrical and Electronics Engineers)


Computador com 32 bits (preciso simples)
A palavra (b1b2...b32) pode ser interpretada como o nmero real

(-1)b1 x 2(b2b3...b9) x 2-127 x (1.b10b11...b32)

Obs.: 8 bits para representar o expoente (11111111)2 = 255


0 255
127 127 128

-127, 128 so reservados (0s e s)

Expoente mximo = 127


Expoente mnimo = -126

16
Representao de nmeros ponto flutuante
Formato IEEE 754

Obs: 23 bits na mantissa. Como o primeiro bit no precisa se armazenado


por que sempre 1 => temos 24 dgitos na mantissa 12 24

2-24 0.596x10-7 (7 dgitos decimais)

Preciso simples => 7 dgitos significativos


Preciso dupla => 16 dgitos significativos
Preciso estendida => 19 dgitos significativos

Preciso simples:
Maior nmero 3.4x1038
Menor nmero 1.18x10-38

17
Representao de nmeros ponto flutuante
Formato IEEE 754

Exemplo: 21.78125 = (.1010111001x25)2 = (1.010111001x24)2

e-127=4 => e = 131 = (10000011)2

0 10000011 01011100100...0
sinal expoente mantissa

Obs: Indeterminaes matemticas (0/0) produzem como sada


NAN = Not A Number

18
Exerccio resolvido
Exerccio: Resolva o somatrio a seguir e compare com o resultado obtido
pelo algoritmo.
int i;
float soma;

soma = 0.0;
i = 1;

Onde est o erro? while (i <= 1000)


{
(0,1)10 = (0,0001100110011...)2 soma = soma + 0.1;
i = i + 1;
}

printf("%f\n", soma);

19
Exerccio proposto

Represente o nmero decimal (13.75)10 na base 2.

Represente o nmero binrio (1010.1110)2 na base 10.

Represente os nmeros 0.35, 5391 e 0.0003 no sistema F(10,3,-2,2).

Represente o nmero decimal 10.232242 = 0.10232242 102 no sistema


F(10,5,-4,4) considerando arredondamento e truncamento

20

También podría gustarte