Sistemas de Computação Prof. MSc. Leandro Galvão [email protected] dcc_oc.html Aritmética...
Transcript of Sistemas de Computação Prof. MSc. Leandro Galvão [email protected] dcc_oc.html Aritmética...
Sistemas de Computação
Prof. MSc. Leandro Galvão
www.dcc.ufam.edu.br/~dcc_oc.html
Aritmética ComputacionalAritmética Computacional-Ponto Flutuante –Ponto Flutuante –
Material originalmente elaborados pelo Prof. Dr. David [email protected]
Compilado a partir de slides preparados porCompilado a partir de slides preparados por
Frações bináriasFrações bináriasFrações bináriasFrações binárias
A parte A parte fracionáriafracionária (entre 0 e 1) de um (entre 0 e 1) de um número real em notação binária é número real em notação binária é representada por:representada por:
Portanto, seu valor em decimal (Portanto, seu valor em decimal (FF) é dado ) é dado por:por:
A expressão anterior pode ser reescrita A expressão anterior pode ser reescrita como:como:
1ou 0ib321.0 bbb
)2()2()2( 3
32
21
1 bbbF
)2(2)2(22 23
112
11
1 bbbF
31
21
11 (2(2(2 bbbF
Frações bináriasFrações bináriasFrações bináriasFrações binárias
A expressão anterior sugere uma técnica de A expressão anterior sugere uma técnica de conversão. se multiplicarmos conversão. se multiplicarmos FF por por 22, teremos:, teremos:
Da expressão acima, percebe-se que Da expressão acima, percebe-se que bb-1-1 é a parte é a parte inteira do número inteira do número (2 × F)(2 × F)..
Portanto, podemos afirmar que Portanto, podemos afirmar que (2 × F) = b(2 × F) = b-1-1 + F + F11, , onde onde 0 < F0 < F11 < 1 < 1, e:, e:
Para encontrar Para encontrar bb-2-2, basta repetir o processo., basta repetir o processo.
31
21
1 (2(22 bbbF
31
21
1 (2(2 bbF
Frações bináriasFrações bináriasFrações bináriasFrações binárias
Assim, o processo de conversão da fração Assim, o processo de conversão da fração FF de decimal de decimal para binário envolve para binário envolve repetidas multiplicações por 2repetidas multiplicações por 2. A cada . A cada passo, a parte fracionária do resultado do passo anterior é passo, a parte fracionária do resultado do passo anterior é multiplicada por 2.multiplicada por 2.
Os dígitos da parte inteira serão Os dígitos da parte inteira serão 00 ou ou 11 (da definição de (da definição de bbii), ), contribuindo para a formação da representação binária.contribuindo para a formação da representação binária.
Frações bináriasFrações bináriasFrações bináriasFrações binárias
O processo anterior não é necessariamente O processo anterior não é necessariamente exato:exato:
Uma Uma fração decimalfração decimal com número com número finitofinito de dígitos de dígitos pode corresponder a uma pode corresponder a uma fração bináriafração binária com um com um número número infinitoinfinito de dígitos. de dígitos.
Nesses casos, o algoritmo de conversão é Nesses casos, o algoritmo de conversão é suspenso após um número pré-estabelecido de suspenso após um número pré-estabelecido de passos, dependendo da passos, dependendo da precisão desejadaprecisão desejada..
Escolha da notação Escolha da notação Escolha da notação Escolha da notação
Com a notação de complemento de 2, podemos Com a notação de complemento de 2, podemos representar a parte inteira de números reais.representar a parte inteira de números reais.
Com a notação fracionária, podemos representar Com a notação fracionária, podemos representar a parte fracionária do mesmo número real.a parte fracionária do mesmo número real.
Limitações:Limitações:
números números muito grandesmuito grandes não podem ser representados não podem ser representados
números números muito pequenosmuito pequenos não podem ser representados não podem ser representados
dificuldades para dificuldades para manter precisão manter precisão durante realização de durante realização de operações aritméticasoperações aritméticas
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)
Um número Um número realreal pode ser representado no pode ser representado no seguinte formato:seguinte formato:
(-1)(-1)ss ×× mm ×× BBee
s s – – sinalsinal mm – – mantissamantissa BB – – base (implícita, não base (implícita, não
representada)representada) ee – – expoenteexpoente
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)
O formato de precisão simples (O formato de precisão simples (floatfloat) ocupa ) ocupa 32 32 bitsbits..
O formato de precisão dupla (O formato de precisão dupla (doubledouble) ocupa ) ocupa 64 64 bitsbits..
23 bits8 bits1 bit
fraçãoexpoentesinal
52 bits11 bits1 bit
fraçãoexpoentesinal
O bit mais à esquerda guarda o sinal do O bit mais à esquerda guarda o sinal do número:número: bit = 0 bit = 0 número positivo número positivo bit = 1bit = 1 número negativo número negativo
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Sinal:: SinalPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Sinal:: Sinal
Ponto flutuante (Padrão IEEE 754) Ponto flutuante (Padrão IEEE 754) :: Fração:: FraçãoPonto flutuante (Padrão IEEE 754) Ponto flutuante (Padrão IEEE 754) :: Fração:: Fração
A A mantissa mantissa é representada na forma é representada na forma normalizada (base binária):normalizada (base binária):
A A mantissamantissa é composta por: é composta por: Algarismo 1Algarismo 1 Ponto de separaçãoPonto de separação FraçãoFração
321.1 bbb
O algarismo 1 e o ponto de numeração O algarismo 1 e o ponto de numeração não não precisam ser armazenadosprecisam ser armazenados, pois são os mesmos , pois são os mesmos para todos os números reais representados.para todos os números reais representados.
Caso a fração possua menos bits que o esperado, Caso a fração possua menos bits que o esperado, zeros devem ser colocados zeros devem ser colocados à direitaà direita, pois não , pois não têm significância.têm significância.
11001100000000000000000
23 bits
fração
fração = 1,110011
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: FraçãoPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: Fração
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: FraçãoPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Fração:: Fração
Por razões históricas, o co-processador de ponto Por razões históricas, o co-processador de ponto flutuante Intel flutuante Intel não utiliza parte inteira implícitanão utiliza parte inteira implícita, , ou seja, a parte inteira também é representada ou seja, a parte inteira também é representada juntamente com a fração.juntamente com a fração.
O formato de precisão O formato de precisão estendidaestendida ocupa ocupa 80 bits80 bits..
64 bits15 bits1 bit
mantissaexpoentesinal
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Expoente:: ExpoentePonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Expoente:: Expoente
O expoente é representado na O expoente é representado na notação notação deslocadadeslocada, ou excesso de N, ou excesso de N
Maior expoente representável: Maior expoente representável: 22n-1n-1
Representado por: Representado por: 11...1111...11
Menor expoente representável: Menor expoente representável: -(2-(2n-1n-1 - 1) - 1) Representado por: Representado por: 00...0000...00
DecimalDecimal Complemento Complemento de doisde dois
Notação Notação excesso de excesso de
NN
+4+4 ---- 111111
+3+3 011011 110110
+2+2 010010 101101
+1+1 001001 100100
00 000000 011011
-1-1 111111 010010
-2-2 110110 001001
-3-3 101101 000000
-4-4 100100 ----
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação excesso de N:: Notação excesso de NPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação excesso de N:: Notação excesso de N
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação deslocada:: Notação deslocadaPonto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754):: Notação deslocada:: Notação deslocada
Representação do valor Representação do valor zerozero: : 01...1101...11..
Representação do valor Representação do valor umum: : 10...0010...00..
Demais valores: Demais valores: somar ao zero somar ao zero (deslocamento)(deslocamento)..
Exemplo:Exemplo:
(10)(10)binbin = +1.0 = +1.0 × 2× 211
0
1 bit
sinal
0000 0000 0000 0000 0000 000
23 bits
fração1000 0000
8 bits
expoente
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)
Mais exemplos:Mais exemplos:
Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)Ponto flutuante (Padrão IEEE 754)
fração fração em em
bináriobinárioexpoente expoente não não sinalizadosinalizado
floatfloat fração fração em em decimaldecimal
expoente expoente decimaldecimal
00 223131 - 1 - 1-2-23131
Inteiros representados
00- (1 - 2- (1 - 2-24-24) ) × 2× 2128128
underflow positivo
- - 22-127-127 22-127-127 (1 - 2(1 - 2-24-24) ) × 2× 2128128
underflow
negativonúmeros
representados
números representad
os
overflow positivo
overflow negativo
Ponto flutuante Ponto flutuante × × Ponto fixoPonto fixo:: Faixa de números representados:: Faixa de números representadosPonto flutuante Ponto flutuante × × Ponto fixoPonto fixo:: Faixa de números representados:: Faixa de números representados
0 00000000
0000000000000000000000fraçãoexpoentesinal
1 00000000
0000000000000000000000fraçãoexpoentesinal
+ 0+ 0
– – 00
Ponto flutuantePonto flutuante:: Zero:: ZeroPonto flutuantePonto flutuante:: Zero:: Zero
Como representar o Como representar o zerozero em ponto em ponto flutuante?flutuante? Adota-se uma convenção.Adota-se uma convenção.
0 11111111
0000000000000000000000fraçãoexpoentesinal +∞
1 11111111
0000000000000000000000fraçãoexpoentesinal -∞
Ponto flutuantePonto flutuante:: Infinito:: InfinitoPonto flutuantePonto flutuante:: Infinito:: Infinito
Notação especial para representar Notação especial para representar eventos incomunseventos incomuns:: permite que os programas possam manipulá-permite que os programas possam manipulá-
los sem que sejam interrompidos.los sem que sejam interrompidos.
x 11111111
xxx...xx ≠ 0fraçãoexpoentesinal
Ponto flutuantePonto flutuante:: NaN – Not a Number:: NaN – Not a NumberPonto flutuantePonto flutuante:: NaN – Not a Number:: NaN – Not a Number
É uma representação do resultado de É uma representação do resultado de operações inválidas, tais como:operações inválidas, tais como: 0/00/0 ∞ ∞ - ∞- ∞ ∞∞/∞/∞ 0 0 × ∞× ∞ √√x, x < 0x, x < 0
Código ASCII (texto)Código ASCII (texto)Código ASCII (texto)Código ASCII (texto)
ASCII ASCII AAmerican merican SStandard tandard CCode for ode for IInformation nformation
IInterchangenterchange A primeira versão foi criada em 1963 para A primeira versão foi criada em 1963 para
normalizar a transmissão e armazenamento de normalizar a transmissão e armazenamento de texto. texto.
Em 1967 foram incluídas as letras minúsculas Em 1967 foram incluídas as letras minúsculas no código, que essencialmente permaneceu no código, que essencialmente permaneceu inalterado até nossos dias.inalterado até nossos dias.
32 48 0 64 @ 80 P 96 ` 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 “ 50 2 66 B 82 R 98 b 114 r
35 # 51 3 67 C 83 S 99 c 115 s
36 $ 52 4 68 D 84 T 100 d 116 t
37 % 53 5 69 E 85 U 101 e 117 u
38 & 54 6 70 F 86 V 102 f 118 v
39 ‘ 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 j 122 z
43 + 59 ; 75 K 91 [ 107 k 123 {
44 , 60 < 76 L 92 \ 108 l 124 |
45 - 61 = 77 M 93 ] 109 m 125 }
46 . 62 > 78 N 94 ^ 110 n 126 ~
47 / 63 ? 79 O 95 _ 111 o 127 DEL
Código ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCIICódigo ASCII
UNICODEUNICODEUNICODEUNICODE
O código ASCII possui a grande O código ASCII possui a grande desvantagemdesvantagem de apenas permitir a de apenas permitir a representação de 2representação de 288=256 símbolos =256 símbolos diferentes.diferentes.
O código UNICODE pretende normalizar a O código UNICODE pretende normalizar a codificação dos caracteres utilizados em codificação dos caracteres utilizados em todas as escritas do mundo. todas as escritas do mundo.
Utiliza 16 bits para codificar cada caracter Utiliza 16 bits para codificar cada caracter e encontra-se disponível nos sistemas e encontra-se disponível nos sistemas informáticos mais recentes.informáticos mais recentes.
Mais informações em Mais informações em http://www.unicode.org
Para saber mais...Para saber mais...Para saber mais...Para saber mais...
William Stallings. William Stallings. Computer Organization and Computer Organization and Architecture: Designing for PerformanceArchitecture: Designing for Performance. 7th Ed. . 7th Ed. Prentice Hall, 2005. Prentice Hall, 2005. Cap. 09Cap. 09..
Patterson & Hennessy. Patterson & Hennessy. Organização e Projeto de Organização e Projeto de Computadores (Interface HW/SW)Computadores (Interface HW/SW). . Cap. 3Cap. 3..
Sivarama P. Dandamudi. Sivarama P. Dandamudi. Guide to Assembly Guide to Assembly Language Programming in LinuxLanguage Programming in Linux. Springer, 2005. . Springer, 2005. Cap. 22Cap. 22..
Kip R. Irvine. Kip R. Irvine. Assembly Language For Intel-Based Assembly Language For Intel-Based ComputersComputers. 5th Edition. Prentice Hall, 2006. . 5th Edition. Prentice Hall, 2006. Cap. Cap. 1717..
QuestõesQuestõesQuestõesQuestões