Professional Documents
Culture Documents
Um sistema de numerao formado por uma coleo de smbolos e regras para representar
conjuntos de nmeros de maneira consistente. Um sistema de numerao que desempenhe satisfa-
toriamente o seu propsito deve possuir as seguintes propriedades:
dn dn1 d1 d0 , d1 b (1.1)
23
para indicar o racional 10 ; o mesmo para notaes da forma 2, 30 . . . 00, com exceo dos casos
23
em que se quer indicar no o racional 10 mas uma medida com determinada preciso. Quando a
representao de um nmero possuir dzimas peridicas utiliza-se como notao uma barra sobre
1 67
a seqncia que se repete. Por exemplo, 3 representado como 0, 3 e 495 representado como
0, 135.
A partir das expresses (1.1) e (1.2) possvel construir o procedimento de mudana de ba-
ses. Seja, ento, X um nmero representado na base b como dn dn1 d1 d0 , d1 . . . b . En-
contrar a sua representao em uma outra base g significa encontrar a seqncia de algarismos
dm dm1 d1 d0 , d1 . . . g tal que
X
X= dj g j .
jm
A seguinte abordagem consiste em separar X nas suas as partes inteira e fracionria. Denomi-
namos a parte inteira de X como X i e, de acordo com (1.2), na nova base g
m
X
Xi = dj g j , (1.3)
j=0
Inicialmente vamos tratar da parte inteira. A diviso de X i por g d origem a dois termos:
m
Xi d0 X j1
= + dj g ,
g g
j=1
o primeiro termo no lado direito da expresso anterior uma frao, o segundo um nmero inteiro.
Entendendo a operao anterior como uma diviso ineira, podemos diuzer ento que a diviso de
X i por g (realizada na base b) possui m j1 (que estar representado na base b em que a
P
j=1 dj g
operao foi realizada) como quociente e d0 (tambm na base b) como resto. Portanto essa operao
de diviso inteira nos fornece o primeiro dgito da nova representao, d0 . Em seguida dividimos o
segundo membro da igualdade anterior (ou seja, o quociente da diviso anterior) temos
Pm j1 m
j=1 dj g d1 X j2
= + dj g .
g g
j=2
Captulo 1. Representao de nmeros em mquinas 7
o que nos fornece o primeiro dgito da parte fracionria note que no lado direito da expresso
anterior o primeiro termo um inteiro e o segundo um fracionrio. Repetindo a operao com a
parte fracionria de g X f temos
X
X
g dj g j+1 = d2 + dj g j+2 .
j=2 j=3
E assim por diante recuperamos os termos da parte fracionria de X na base g. Aqui vale a mesma
observao do pargrafo anterior, as operaes de multiplicao devem ser realizadas na base b e
os dgitos obtidos esto representados na base b.
Exemplo: Vamos representar o numeral 53, 2056 no sistema base-8. Nesse caso X i = 536 e
X f = 0, 136 . Para encontrar os dgitos da parte inteira na base 8 devemos realizar sucessivas
operaes de diviso por 8, como X i est representado na base 6, devemos realizar todas as
operaes nessa base3 , ou seja vamos dividir por 126 (= 810 ):
536 16
= 46 + ,
126 126
o resto da diviso, 16 o primeiro dgito (na base 6), na base 8 temos o mesmo dgito, ou seja,
18 . Em seguida, vamos dividir o quociente 46 :
46 46
= 06 + ,
126 126
3
Para facilitar as operaes conveniente utilizar uma tabela de multiplicaes em base 6 (tabuada em base 6):
16 26 36 46 56
16 16 26 36 46 56
26 26 46 106 126 146
36 36 106 136 206 236
46 46 126 206 246 326
56 56 146 236 326 416
Captulo 1. Representao de nmeros em mquinas 8
a parte inteira que resulta da multiplicao 106 = 68 e a parte fracionria novamente assume
a mesma forma, 0, 506 . Isto nos permite concluir que a partir deste ponto sempre obteremos o
mesmo dgito. Portanto 0, 2056 representa o mesmo nmero que 0, 268 . Combinando a parte
inteira e fracionria temos finalmente que 53, 2056 = 41, 268
pode ser utilizado para representar o nmero binrio ((1)s d30 d29 . . . d2 d1 d0 )2 . Ou seja, uma
seqncia binria de 32 dgitos (ou bits) s d30 d29 . . . d2 d1 d0 pode representar todos os inteiros
Captulo 1. Representao de nmeros em mquinas 9
Nesse caso o maior inteiro representvel dado numeral Imax = 011 . . . 112 . Portanto
Levando em conta os nmeros negativos e que o zero possui duas representaes possveis (como 0
e 0), essa disposio de dados no registro permite representar os 232 1 inteiros entre 231 1
e 231 1.
Essa tcnica de registro com n bits permite armazenar em uma mquina todos os 2n 1 nmeros
inteiros entre 2n1 1 e 2n1 1.
Se em uma operao de soma ou subtrao o resultado for um nmero que no pode ser ar-
mazenado nos registros ocorre um erro conhecido como overflow. Nesse caso a mquina deve ser
capaz de reconhecer o evento e enviar uma mensagem de erro se no o fizesse, poderia retornar
um nmero truncado que no corresponde ao resultado correto da operao programada.
Observao. Uma forma alternativa de registrar inteiros positivos consiste em utilizar todos os
bits do registro para representar os inteiros, neste caso, os n bits seriam capazes de registrar os 2n
inteiros entre 0 e 2n 1.
Se houver necessidade de um nmero de inteiros maior do que o suportado sempre possvel
combinar dois ou mais registros para armazenar o nmero em questo. O nico impedimento a
quantidade de espao existente na mquina para os registros de nmeros.
possvel estender a tcnica utilizadana representao dos inteiros para representar com preci-
so finita, nmeros que possuam parte fracionria. Nesse caso, alm do sinal, uma parte do registro
utilizada para a parte inteira do nmero e o restante para a parte fracionria. Assim a seqncia de
32 bits: s d15 d14 . . . d13 d14 d15 pode ser interpretada, por exemplo, como um registro onde
os 16 bits d15 , . . . , d0 representam a parte inteira e os demais 15 bits, d1 , . . . , d15 , a parte
fracionria:
Atravs dessa representao, o maior nmero representvel 216 215 e o menor 216
215 . Nesse intervalo s podemos representar exatamente os nmeros em intervalos de 215 .
1. x = m be , onde
2. m = 0, d1 d2 . . . dn n N,
3. 1 d1 b 1 e 0 di b 1 para i = 2, 3, . . . n,
4. e1 e e2 , onde e, e1 , e2 Z.
Exemplo: O nmero 9999, 1234 em representao de ponto flutuante em base 10 com 8 dgi-
tos de preciso 0, 99991234 104 . Utilizando essa mesma prescrio, o nmero 0, 0012113
representado como 0, 12113131 102 .
x y 6= x + y,
x y 6= x y,
(x y) z 6= x (y z),
x (y z) 6= (x y) (x z).
O padro IEEE754 (a sigla se refere ao Institute of Electrical and Electronics Engineers) foi
desenvolvido com o objetivo de unificar as diversas implementaes em mquina de registros e
operaes em ponto flutuante. A maioria dos processadores e compiladores atuais o suportam ou
Captulo 1. Representao de nmeros em mquinas 12
pelo menos suportam um subconjunto obrigatrio das definies. interessante observar que alm
dos numerais em ponto flutuante, um mesmo registro pode conter informao sobre +, , +0,
0, numerais subnormais (menores do que o usualmente suportado em uma notao F (2, n, e2 , e1 ))
e os N aN (nota a number reservado para operaes ilegais como razes de nmeros negativos).
O padro prev quatro tipos de registros: registros de 32 bits denomindos pontos flutuantes de
preciso simples, registros de 43 ou mais bits para preciso simples estendida, registros de 64 bits
para preciso dupla e registros de 79 ou mais bits para preciso dupla estendida. A implementao
de preciso simples obrigatria, as demais so opcionais.
A ttulo de ilustrao, vale a pena estudar os registros de preciso simples.
Os 32 bits do registro de um numeral em preciso simples so divididos de acordo com o
diagrama a abaixo,
o bit s responsvel pelo sinal, os bits e07 e06 . . .e00 so responsveis pelo expoente e finalmente os
bits m22 m21 . . .m00 so responsveis pela mantissa. Com os 8 bits do expoente podemos represen-
tar inteiros entre 0 e 255, no entanto os registros relativos ao 0 (00000000) e 255 (11111111) so
reservados para uso especial, sobram portanto os inteiros entre 1 e 254. Segundo o padro, o inteiro
relativo ao expoente est deslocado de 127, ento os 8 bits permitem representar os valores inteiros
entre 126 e 127. Os 23 bits restantes so utilizados para representar a mantissa com 24 dgitos
binrios (j que o primeiro dgito sempre igual a 1 em uma base binria, no h necessidade
explcita de armazen-lo no registro e com isso ganhamos um bit extra) com uma diferena: no
padro IEEE754 os pontos flutuantes normalizados comeam com o primeiro dgito esquerda
posicionado antes da vrgula. Portanto o registro de 32 bits capaz de armazenar os elementos no
nulos do sistema F (2, 24, 126, 127) e mais os casos especiais:
1. zeros: bits do expoente e da mantissa todos nulos. O bit de sinal pode ser igual a 0 ou 1, ou
seja, h uma representao para +0 e 0.
2. subnormais: bits do expoente todos nulos e os da mantissa guardam informao sobre o sub-
normal.
3. infinitos: bits do expoente todos iguais a 1 e os da mantissa iguais a 0. O bit de sinal pode ser
igual a 0 ou 1, ou seja, h uma representao para + e .
4. N aN : bits do expoente todos iguais a 1 e os demais bits contm informao de diagnstico.
Exemplo: Vamos encontrar o registro equivalente ao numeral 1345, 875. O primeiro passo
representar o nmero na base binria:
01010000011110000000000.
Captulo 1. Representao de nmeros em mquinas 13
O expoente vale 10, com o deslocamento de 127, o inteiro a ser representado pelos bits do
expoente o 137 = 100010012 . O bit de sinal igual a 0 pois o nmero positivo. O registro
de 32 bits completo dado por
01000100101010000011110000000000.
1.3. Erros
definido por |x
Definio (Erro absoluto e erro relativo). O erro absoluto na representao x
|x x|
|. O erro relativo definido como
x .
|x|
Em uma mquina, denominamos preciso o nmero de dgitos na mantissa. Por outro lado, como
o prprio nome diz, a exatido de uma aproximao uma medida de quanto ela est prxima
do valor exato. Uma maneira de estimar a exatido utiliza o conceito de dgitos exatos de uma
representao.
Captulo 1. Representao de nmeros em mquinas 14
Atravs dessas definies podemos apreciar a diferena entre os conceitos de preciso e exatido
de uma representao x
.
e
= 0, d1 d2 . . . dk be + 0, dk1 dk2 . . . dn bek .
x
O menor valor absoluto para a diferena6 entre eles dado pela situao em que dk1 e
dk1 diferem de uma unidade, todos os demais dgitos at o n-simo so iguais e dj = 0 para
j > n. Portanto
| 0, 1b bek = bek1 .
|x x
Por outro lado, o maior valor absoluto para dado pela situao limite em que todos os dgitos
dk1 , dk2 , . . . dn = 0 e todos os dgitos dk1 , dk2 , . . . = b 1. Portanto
= (b 1)b1 + (b 1)b2 + . . . bek
1 1 1
= 1 + 2 + . . . bek = bek .
b b b
Essas estimativa nos permite estabelecer limites inferiores e superiores para o erro relativo:
bek1 |x x| bek
< .
|0, d1 d2 . . . be | |x| |0, d1 d2 . . . be |
5
Sem perda de generalidade, consideramos x e x positivos.
6
Aqui a operao de diferena a usual para os nmeros reais.
Captulo 1. Representao de nmeros em mquinas 15
1.3.3. Arredondamento
{0, 4 ; 0, 4 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 4 ; 0, 4 ; 0, 4}.
{0, 5 ; 0, 5 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 5; 0, 5; 0, 5}.
{0, 4 ; 0, 4 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 5 ; 0, 5 ; 0, 5}.
Captulo 1. Representao de nmeros em mquinas 16
{0, 5 ; 0, 5 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 4 ; 0, 4 ; 0, 4}.
5. Arredondamento par (base decimal): o penltimo digito arredondado para o algarismo se-
guinte se o ltimo dgito for maior ou igual a 6. Se o ltimo dgito for menor ou igual a 4 o
penltimo dgito mantido. Se o ltimo dgito for igual a 5 e o penltimo dgito for mpar,
o penltimo digito arredondado para o algarismo seguinte. Caso o penltimo seja par, ele
mantido. O algoritmo possui esse nome pois como resultado os numerais sempre terminam
com um algarismo par se o ltimo algarismo for igual a 5.
{0, 4 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 3 ; 0, 3 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 5}
Porm o teorema no diz nada sobre alm de sua existncia. Para estimar o erro cometido na
aproximao f (
x) devemos utilizar mais informaes sobre a funo f . Por exemplo, se soubermos
x, x), supy(x,x) |f 0 (y)| = M , ento temos que
que a derivada de f limitada no intervalo (
x)| = |f 0 ()| |x x
|f (x) f ( | M |x x
|.
Mesmo que no sejamos capazes de determinar o valor mximo da derivada da funo f no in-
.
x, x), ainda podemos considerar o caso em que |
tervalo ( x x| = x
pequeno. Nesse caso, se
f 0 (
x) 6= 0 e f 0 no varia muito rapidamente na vizinhana de x
ento como x
muito pequeno
podemos considerar M f 0 (
x) na expresso acima, dessa forma
.
f ( x)| f 0 (
x) = |f (x) f ( | = f 0 (
x)|x x x) x
.
O mesmo procedimento pode ser utilizado para o caso de funes que dependam de duas ou
mais variveis. Nesse caso seja o erro na i-sima varivel xi de um funo f que dependa de
n variveis, ento o erro propagado na funo f resultado dos erros nas n variveis dado por
f (x1 , x2 , . . . , xn ):
n
X f
f (x1 , x2 , . . . , xn ) = xi (x1 , x2 , . . . , xn ) xi .
i=1
Captulo 1. Representao de nmeros em mquinas 17
x1 = 1, 0000 . . . x6 = 5, 7283 . . .
x2 = 2, 0000 . . . x7 = 7, 4078 . . . 0, 6753 . . . i
x3 = 3, 0002 . . . x8 = 7, 4078 . . . + 0, 6753 . . . i
x4 = 3, 9940 . . . x9 = 9, 6907 . . . 0, 3513 . . . i
x5 = 5, 0803 . . . x10 = 9, 6907 . . . 0, 3513 . . . i
Um erro relativo de 1, 8 106 no coeficiente x9 foi capaz de alterar drasticamente parte das
razes. Como entender esse fenmeno?
Vamos avaliar quanto varia cada raiz xj (j = 1, 2, . . . , 10) quando alteramos o coeficiente
55 do termo x9 . Para tanto vamos considerar o novo polinmio P(, x) = P (x) x9 .
Esse novo polinmio possui dez razes xj (), j = 1, 2, . . . , 10, cada uma delas depende de
dxj
. A derivada contm informao sobre quanto a i-sima raz de P(, x) varia com
d =0
relao a quando = 0. Como P(0, x) P (x), essas derivadas possuem a informao que
de P .
buscamos sobre as razes
dxj
Para calcular no ser necessrio encontrar explicitamente a dependncia das
d =0
razes em , basta lembrar que por definio P(, xj ()) = 0 (xj () raiz do polinmio
P(, x)) e portanto de acordo com a regra da cadeia
d P P dxj
(P(, xj ())) = (, xj ()) + (, xj ()) =0
d x d
e assim,
P
dxj (, xj ())
= P .
d (, xj ())
x
Captulo 1. Representao de nmeros em mquinas 18
10 10
P X Y
(, x) = 9x8 + (x l).
x
k=1 l=1,l6=k
Assim,
dxj x9j ()
= .
9x8 + 10
Q10
d
P
k=1 l=1,l6=k (xj () l)
j 9 j 9
dxj
= P10 Q10 = Q10 .
d =0
k=1 l=1,l6=k (j l) l=1,l6=j (j l)
Na expresso anterior, o somatrio foi retirado pois o nico termo que contribua era o k = j
(Por que?).
Por economia de notao, vamos denominar a derivada da j-sima raiz em = 0 por j :
j 9
dxj
j = 10 . (1.6)
d =0
Q
l=1,l6=j (j l)
1 2, 8 106 6 3, 5 103
2 1, 3 102 7 9, 3 103
3 2, 0 8 1, 3 104
4 6, 1 101 9 9, 6 103
5 6, 8 102 10 2, 8 103
E assim podemos notar que enquanto a variao no valor das primeiras razes pequena, o
mesmo no pode ser dito para as demais. O valor das derivadas explica o mal condicionamento
deste problema.
. R1
Exemplo: Seja o seguinte algoritmo para calcular a integral In = 0 dx xn ex1 , onde n =
1, 2, . . . Podemos integrar por partes In :
x=1
Z 1
In = xn ex1 x=0 n dx xn1 ex1
0
= 1 n In1 . (1.7)
integrao [0, 1], o integrando sempre positivo, alm disso, o termo ex1 sempre menor ou
igual a 1, isto implica a desigualdade
Z 1
1
0 < In dx xn = . (1.8)
0 n+1
Portanto devemos esperar que os termos In decresam com n e sejam sempre positivos. O
primeiro termo I1 pode ser calculado explicitamente utilizando integrao por partes,
Z 1 Z 1
I1 = x1
dx x e =1 dx ex1 = e1 .
0 0
I1 = 0, 36788.
I2 = 1 2(I1 ) = 1 2(I1 + ) = I2 2
e ento
I3 = 1 3(I2 ) = 1 3(I2 2) = I3 + 3 2 .
I9 I9 + 9! 5, 6 107 I9 + 0, 2
e
I10 I10 10! 5, 6 107 I10 2.
1
In1 = (1 In ) (1.9)
n
Captulo 1. Representao de nmeros em mquinas 20
isolando In1 . Utilizando os mesmos critrios possvel verificar que o erro cometido no
ponto inicial mais e mais diludo a cada passo do algoritmo (verifique!)
Alm dessa propriedade, a diferena da iterao (1.9) reside no fato de que o ponto inicial
deve ser um valor de n suficientemente grande para que os ndices abaixo possam ser calcula-
dos pelo algoritmo. Neste ponto a estimativa (1.8) til, pois ela nos diz que In decresce com
n e mais In < 1 . Portanto podemos utilizar um nmero n suficientemente alto, In = 0 e
n+1
1
= n+1 .
1.4. Exerccios
2) Utilize no mximo dez algarismos aps a vrgula para representar o nmero 0, 11 nas bases
2, 3 e 16.
3) Quantos bits, no mnimo, so necessrios para representar os inteiros entre 3000 e 3000
em um registro de mquina. Quais os inteiros adicionais que podem ser representados utilizando o
mesmo registro?
x2 y 00 + x y 0 x2 + 2 y = 0.
Dado um x fixo e supondo que I0 (x) e I1 (x) so conhecidos determine a estabilidade do uso da
relao de recorrncia para aproximar I (x) para os demais valores do parmetro .