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
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
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
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
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
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
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
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
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
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
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
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
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:
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
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
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,
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
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
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.
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
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
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 ↑
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
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 ↑
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.
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
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 }| {
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.
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
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
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+
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
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
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 . . .
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
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
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
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
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
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
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
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 232−1. • 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
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
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
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 24−8 = 8
0001 1 1001 -7 24−7 = 9
0010 2 1010 -6 24−6 = 10
0011 3 1011 -5 24−5 = 11
0100 4 1100 -4 24−4 = 12
0101 5 1101 -3 24−3 = 13
0110 6 1110 -2 24−2 = 14
0111 7 1111 -1 24−1 = 15
Para negar um n´umero em complemento a dois, use o seguinte algoritmo:
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
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 de−2?
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 24−2 = 16−2 = 14, cuja
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
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
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 4−3.
Solu¸c˜ao do exemplo
Ao converter obtemos (4)10= (0100)2 e (−3)10= (1101)2.
Portanto
0100 +1101
0001
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
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 7−4 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
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
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
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
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
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 0≤di ≤(β−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
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
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.142−x|= 0.000857
|2.143−x|= 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?
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
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
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, 0≤di ≤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
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
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
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
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
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?
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,
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
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
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:
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
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.
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
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.
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
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
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
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
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
372−371 = 0.37×103+ 0.37×103 = 0.37×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
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
372−371 = 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
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
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
1234∗0.016 = 0.12×104∗0.16×10−1
= 0.12×104
∗0.16×10−1
= 0.0192×103 = 0.19×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
Opera¸c˜oes aritm´eticas
Exemplo: Divis˜ao
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
Arredondamento→0.37×10−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
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
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)
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
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.45−4.35)
0.445×101
−0.435×101 = 0.010×101 0.555×101
∗0.100×100 = 0.055500×101 =0.555
b) 5.55∗4.45−5.55∗4.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
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:
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
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−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
˜
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
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.
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
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 semelhantesExemplo
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.08276253−6 = 0.08276253.
Nessa m´aquina temos
√
37 = 6.08276253 → 0.6083×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
Cancelamento
Solu¸c˜ao do Exemplo - (cont.) • Efetuando a subtra¸c˜ao temos
0.6083×101
−0.6000×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
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!
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 =
x−y
√
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
x−y
√
x+√y =
37−36
√
37 +√36 =
1
0.6083×101+ 0.6000×101
= 1
0.1208×102
= 0.08278145 = 0.8278×10−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
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
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
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.07138−8.068|= 0.00338
Parai = 3, temos
(x1+y1) + (x2+y2) + (x3+y3) = 0.1210×102 EA( ¯S) =|12.10707−12.10|= 0.00707
Parai = 4, temos
(x1+y1) + (x2+y2) + (x3+y3) + (x4+y4) = 0.1613×102 EA( ¯S) =|16.14267−16.13|= 0.01276