Você está na página 1de 72

Conversão de Números

Prof. Dr. Henrique Reis


Representação dos números.
Os números empregados no cálculo computacional podem ser de
dois tipos: números inteiros e números em “ponto flutuante”
(números reais da matemática, por exemplo 3.56 = 0.356 x 10 1). Os
computadores atuais representam os números internamente no
formato binário, como uma sequência de 0s e 1s.
Apesar dessa representação ser conveniente para as maquinas é
antinatural para os seres humanos, cujo sistema de numeração é o
decimal.
Obs. No passado o nosso sistema de numeração já foi também na
base 12 (ex. contar nas falanges dos dedos) na base 60 (ex. sistema
horário) .
Decomposição de um número num sistema
de bases.
• Em geral qualquer número pode ser decomposto numa soma dos
dígitos que o constitui (dj) vezes a potências da sua base (β) conforme
indicado abaixo:

Onde os dígitos dj pertencem aos números naturais e satisfazem a


condição: 0 ≤ dj ≤ (β-1)
Representação de um Número Inteiro
Sistema de numeração na base b
Combinação linear na base b
• Base b ≥ 2: m+ +

235=200+ 30+5
2 1 0
235=2. 10 +3 . 10 +5 . 10
235 , 12=200+30 +5+0 ,1+0 , 02
1 2
235 , 12=200+30 +5+ +
10 10 0
2 1 0 −1 −2
235 , 12=2.10 +3 . 10 +5 . 10 +1 . 10 +2 . 10
Representação de um Número Real
A representação de um número real no computador pode ser feita por
representação em Ponto Fixo ou Ponto Flutuante.

𝑛 n = Nº de dígitos decimais
𝑥=± ∑ 𝑑𝑖 𝛽 −𝑖
k = qto dígitos int - 1
𝑖=− 𝑘
Alg_Poli.ccp
Divisão de Inteiro
• n Ɛ ℤ por b Obs: 0 ≤ 𝑟 ≤( 𝑏 −1)
Obs: Fim da divisão quando: q
• n=q.b+r
Exemplo:
37 | 4
1 9
Exemplo: Base 2

13 | 2 6|2 3|2
1 6 0 3 1 1

13 = 6. 2+1 6=3.2+ 0 3=1.2+1


1 0
13=6. 2 +1. 2
13=( 3.2+0) 2 +1. 2
1 0
13=( 1101)2
2 1 0
13=3. 2 +0. 2 +1. 2
2 1 0
13=( 1.2+1) 2 + 0.2 +1. 2
3 2 1 0
13=1. 2 +1. 2 +0. 2 +1. 2
Represente 13 na b=2
13 | 2 13=( 1101)2
1 6 |2
0 3|2 3 2 1 0
1 1 13=1. 2 +1. 2 +0. 2 +1. 2
Represente 22 na b=3
22 | 3 2 2=(211)3
1 7 |3
1 2 2 1 0
2 2= 2.3 +1. 3 +1. 3
Represente 34 na b=5
34 | 5 3 4=( 114)5
4 6 |5
1 1 2 1 0
34=1. 5 +1. 5 + 4 . 5
Representação de números decimais
0 , 45=(0 , 𝑑 ¿ ¿ 1 𝑑 2 𝑑 3 …)¿ 4 .10− 1+5 .10 −2=( 𝑑¿ ¿ 1. 2− 1+ 𝑑 2 . 2− 2+ 𝑑 3 .2 −3 …) ¿
X (2)
0 , 45=( 0 , 𝑑 1 . 2−1 + 𝑑 2 . 2−2 + 𝑑 3 . 2− 3 …)
0 ,9=(𝑑 1 + 𝑑2 . 2−1 + 𝑑3 . 2−2 + 𝑑 4 . 2−3 …) 1 , 8=( 𝑑 2+ 𝑑 3 .2 −1 +𝑑 4 . 2− 2+ 𝑑 5 . 2− 3 …)
(-)
𝑑1= 0 𝑑2 =1 (-)
X (2) X (2)
1 , 6=( 𝑑 3 +𝑑 4 . 2− 1+ 𝑑 5 . 2− 2+ 𝑑 6 . 2−3 …) 1 , 2=( 𝑑4 +𝑑 5 . 2−1 +𝑑 6 . 2−2 + 𝑑7 . 2− 3 …)
𝑑3 =1 (-) 𝑑 4=1 (-)
X (2) X (2)
0 , 4=(𝑑 5 + 𝑑6 . 2−1 + 𝑑7 . 2− 2+ 𝑑 8 .2− 3 …) 0 ,8=( 𝑑6 + 𝑑 7 .2 −1 +𝑑 8 . 2−2 + 𝑑 9 . 2− 3 …)
(-) (-)
𝑑5 =0 0
X (2) X (2)
1 , 6=( 𝑑 7 +𝑑 8 . 2−1 + 𝑑9 . 2− 2+ 𝑑 10 . 2−3 …)

0 , 45=( 0,0111001100 1100)2 0 , 45=( 0,011100) 2


Representação de 0,333...na base 3
0 ,333 …=(0 , 𝑑 ¿ ¿ 1 𝑑 2 𝑑3 …)¿ 3 .10− 1+ 3 .10− 2 …=(𝑑 ¿¿ 1 . 3−1 + 𝑑 2 . 3− 2 +𝑑 3 . 3−3 …) ¿

0 ,333=(0 , 𝑑1 .3 −1 + 𝑑2 . 3− 2+ 𝑑 3 .3 −3 …) X (3)

1 , 0=( 𝑑 1+ 𝑑 2 . 3 −1 +𝑑 3 . 3−2 + 𝑑 4 . 3−3 …) 0 ,0=( 𝑑2 + 𝑑 3 . 3− 1 +𝑑 4 . 3− 2 +𝑑 5 .3 −3 …)


𝑑1= 1 (-) 𝑑2 =0
X (3)

0 ,333 …=(0 ,1)3


Mudança de Base
iii) 13 que está na base 10, para a base 2.
Converter (11.1100)2 para a base 10
F(2,3,-3,3) 2 bits para o expoente
(máx em |3|)
( 0,111 𝑥 21 )2

0 1 1 1 0 0 1
F(2,3,-3,3)
Base = 2 Zero = 0.000 x 2-3
t = 0.d1d2d3 Mín. = 0.100 = (1x2-1)x 2-3 = 0,06250
Menor Exp. -3 Máx.= 0.111 = (1x2-1+1x2-2 +1x2-3 )23 = 7
Maior Exp. 3
Representação em Ponto Flutuante
• Esta representação e universalmente utilizada atualmente. Dado um número real x ≠ 0, ele pode ser
representado por:
x = ±di × βe
Escrever os números:
X1 = 4321.24 = 0.432124 x 104 = 0.4321 x 104
X2 = -0.0013523 = -0.13523 x 10-2 = -0.1352 x 10-2
X3 = 125.64 = 0.12564 x 103 = 0.1256 x 103
X4 = 57481.23 = 0.5748123 x 105 = 0.5748 x 105
X5 = 0.00034 = 0.34 x 10-3
X1 = 4321.24 = 0.432124 x 104 = 0.432 x 104
X2 = -0.0013523 = -0.13523 x 10-2 = -0.135 x 10-2
X3 = 125.64 = 0.12564 x 103 = 0.126 x 103
X4 = 57481.23 = 0.5748123 x 105 = 0.575 x 105
X5 = 0.00034 = 0.34 x 10-3
Representação de Números no Sistema F (β; t; m; M)
0.38 x 2 = 0.76
0.76 x 2 = 1.52
0.52 x 2 = 1.04
0.04 x 2 = 0.08
0.08 x 2 = 0.16
0.16 x 2 = 0.32
0.32 x 2 = 0.64
0.64 x 2 = 1.28
0.28 x 2 = 0.56
0.56 x 2 = 1.12
0.12 x 2 = 0.24
0.24 x 2 = 0.48
0.48 x 2 = 0.56
• Ex1. Seja uma máquina que opere com apenas 6 dígitos na mantissa,
ou seja, que seja capaz de armazenar números no formato m = ±
0,d1d2d3d4d5d6 x 10e. Como armazenaríamos número
(0,11)10 nesta maquina?
0.11 x 2 = 0.22
(0,11)10 = (0,000111000010100011110101110000101000111101............)2 0.22 x 2 = 0.44
0.44 x 2 = 0.88
Como o número (0,11)10 que não tem representação binária finita, teremos 0.88 x 2 = 1.76
0.76 x 2 = 1.52
neste caso: 0.52 x 2 = 1.04
0.04 x 2 = 0.08
(0,11)10 → (0,000111)2 → (0,109375)10 0.08 x 2 = 0.16
0.16 x 2 = 0.32
0.32 x 2 = 0.64
0.64 x 2 = 1.28
0.28 x 2 = 0.56
0.56 x 2 = 1.02
.
.
.
Ex2. Represente em binário os números 0,6 e 0,7.

0,6 = 0,100110011001... 0,7 = 0,1011001100110...


Represente estes números na aritmética F(2,2,-1,2 )

Eles serão representados igualmente por 0.10 × 20.

Esse número equivale a 0,5 em decimal. Portanto, tanto o 0,6 quanto o


0,7 serão considerados 0,5.
Base 3 F (3,3,2,1)
t 3 e = (-2,-1,0,1)
T. Comb. 27 a.1) Quantidade de Números do Sistema
± d1 d2 d3 e
1 0 0 0 2 2 3 3 4 144
2 0 0 1
3 0 0 2
4 0 1 0
5 0 1 1
6 0 1 2
7 0 2 0 a.2) Números que podem ser representados no Sistema
8 0 2 1 d1 d2 d3 e=(-2,-1,0,1)
9 0 2 2 -1 -2 -3 Total -2 -1 0 1
10 1 0 0 0,333333 0 0 0,333333 0,037 0,111 0,333 1,000
11 1 0 1 0,333333 0 0,037037 0,37037 0,093 0,185 0,370 0,741
12 1 0 2 0,333333 0 0,074074 0,407407 0,102 0,204 0,407 0,815
13 1 1 0 0,333333 0,111111 0 0,444444 0,111 0,222 0,444 0,889
14 1 1 1 0,333333 0,111111 0,037037 0,481481 0,120 0,241 0,481 0,963
15 1 1 2 0,333333 0,111111 0,074074 0,518519 0,130 0,259 0,519 1,037
16 1 2 0 0,333333 0,222222 0 0,555556 0,139 0,278 0,556 1,111
17 1 2 1 0,333333 0,222222 0,037037 0,592593 0,148 0,296 0,593 1,185
18 1 2 2 0,333333 0,222222 0,074074 0,62963 0,157 0,315 0,630 1,259
19 2 0 0 0,666667 0 0 0,666667 0,167 0,333 0,667 1,333
20 2 0 1 0,666667 0 0,037037 0,703704 0,176 0,352 0,704 1,407
21 2 0 2 0,666667 0 0,074074 0,740741 0,185 0,370 0,741 1,481
22 2 1 0 0,666667 0,111111 0 0,777778 0,194 0,389 0,778 1,556
23 2 1 1 0,666667 0,111111 0,037037 0,814815 0,204 0,407 0,815 1,630
24 2 1 2 0,666667 0,111111 0,074074 0,851852 0,213 0,426 0,852 1,704
25 2 2 0 0,666667 0,222222 0 0,888889 0,222 0,444 0,889 1,778
26 2 2 1 0,666667 0,222222 0,037037 0,925926 0,231 0,463 0,926 1,852
27 2 2 2 0,666667 0,222222 0,074074 0,962963 0,241 0,481 0,963 1,926
Total 72
0,4 x3= 1,2
0,2 x3= 0,6
0,6 x3= 1,8
0,8 x3= 2,4
0,4 x3= 1,2

0.1012 0.101 x 30

2 3 0,8 x3= 2,4


2 0 0,4 x3= 1,2
0,2 x3= 0,6
2 0,6 x3= 1,8
0,8 x3= 2,4

0.2101
2 + 0.2101 2.2101 0.221 x 21
a) Quantos números podemos representar neste sistema?
± d1 d2 d3 d4 d5 e
2 1 2 2 2 2 5 160
14 0 1 1 0 1 Faixa normalizada
15 0 1 1 1 0 d1 d2 d3 d4 d5 e = (-3,-2,-1,0,1)
16 0 1 1 1 1 -1 -2 -3 -4 -5 Total -3 -2 -1 0 1
17 1 0 0 0 0 0,5 0 0 0 0 0,5 0,06250 0,12500 0,25000 0,50000 1,00000
18 1 0 0 0 1 0,5 0 0 0 0,03125 0,53125 0,06641 0,13281 0,26563 0,53125 1,06250
19 1 0 0 1 0 0,5 0 0 0,0625 0 0,5625 0,07031 0,14063 0,28125 0,56250 1,12500
20 1 0 0 1 1 0,5 0 0 0,0625 0,03125 0,59375 0,07422 0,14844 0,29688 0,59375 1,18750
21 1 0 1 0 0 0,5 0 0,125 0 0 0,625 0,07813 0,15625 0,31250 0,62500 1,25000
22 1 0 1 0 1 0,5 0 0,125 0 0,03125 0,65625 0,08203 0,16406 0,32813 0,65625 1,31250
23 1 0 1 1 0 0,5 0 0,125 0,0625 0 0,6875 0,08594 0,17188 0,34375 0,68750 1,37500
24 1 0 1 1 1 0,5 0 0,125 0,0625 0,03125 0,71875 0,08984 0,17969 0,35938 0,71875 1,43750
25 1 1 0 0 0 0,5 0,25 0 0 0 0,75 0,09375 0,18750 0,37500 0,75000 1,50000
26 1 1 0 0 1 0,5 0,25 0 0 0,03125 0,78125 0,09766 0,19531 0,39063 0,78125 1,56250
27 1 1 0 1 0 0,5 0,25 0 0,0625 0 0,8125 0,10156 0,20313 0,40625 0,81250 1,62500
28 1 1 0 1 1 0,5 0,25 0 0,0625 0,03125 0,84375 0,10547 0,21094 0,42188 0,84375 1,68750
29 1 1 1 0 0 0,5 0,25 0,125 0 0 0,875 0,10938 0,21875 0,43750 0,87500 1,75000
30 1 1 1 0 1 0,5 0,25 0,125 0 0,03125 0,90625 0,11328 0,22656 0,45313 0,90625 1,81250
31 1 1 1 1 0 0,5 0,25 0,125 0,0625 0 0,9375 0,11719 0,23438 0,46875 0,93750 1,87500
32 1 1 1 1 1 0,5 0,25 0,125 0,0625 0,03125 0,96875 0,12109 0,24219 0,48438 0,96875 1,93750
Total 80
x3=2.142857
0.09995 e 0.9995 são os limites da MANTISSA permitidos
Aritmética de ponto flutuante
• Se uma operação aritmética resultar num número que seja maior, em
valor absoluto, que o maior número representável, ocorrerá overflow.
• Se resultar num número que seja menor, em valor absoluto, que o menor
número representável diferente de zero, ocorrerá underflow.
• O modo de tratar overflow e underflow dependerá do compilador
utilizado para gerar o programa executável.
• Para analisar a precisão das operações aritméticas sobre números no
formato com ponto flutuante, considere-se um hipotético computador
com dois dígitos (p = 2), base b = 10 e expoente e  {-5, …, 5}: ± .d1d2 x
10e. Quando dois números são somados ou subtraídos, os dígitos do
número de menor expoente são deslocados de modo a alinhar as casas
decimais.
• O resultado é depois normalizado (o expoente é ajustado para que d1 ≠
0) e arredondado para dois dígitos (p = 2).
O resultado da adição é 4.4 em vez de
4.364
0,333 x 100
0,100 x 102
0000
0000
0333
0000
0,033300 x 102

3,33 x 100
• Ex3. Operações em F(10,2,-5,5).
- Sejam x =4,32 e y=0,064
• Calcular x + y.
• A adição aritmética de PF requer o alinhamento dos pontos decimais
dos dois números.
x = 0.43x 101 e y = 0.0064 x 101
• x + y = 0.4364 x 101
Resultado com 2 dígitos : x+y = 0.44 x 101
• Sejam x =372 e y=371
• Calcular x - y.
• x = 0.37x 103 e y = 0.37 x 103
• x - y = 0.00 x 103
• Resultado com 2 dígitos
• x-y = 0.00 x 103
• Sejam x =691 e y=2,71
• Calcular x + y.
• x = 0.69x 103 e y = 0.0027 x 103
• x + y = 0.6927 x 103
• Resultado com 2 dígitos :
• x+y = 0.69 x 101
Calc_e.ccp
Série de Taylor
Cos(x)

//Cos_x.cpp
Sin(x)
//exe_212.cpp

Você também pode gostar