Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto...

46
Sistemas de Computação Práticas Laboratoriais Semana 2 Prof. Bruno Medeiros Prof. António Pina

Transcript of Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto...

Page 1: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Sistemas de Computação Práticas Laboratoriais

Semana 2

Prof. Bruno Medeiros Prof. António Pina

Page 2: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Números Fracionários

�  Qual o decimal de 1011.1012? �  Parte inteira => 1011 -> 1110

�  Parte Fracionária => 101 -> 5 / 23 = 0.625

�  Valor = 11.62510

�  Ou seja, interpretamos da mesma forma que interpretamos um número inteiro.

Page 3: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Números Fracionários

�  Valor: �  5 ¾

�  101.112

�  2 7/8 �  10.1112

�  63/64 �  0.1111112

Page 4: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Limitações da representação fracionária em binário

�  Só podemos representar de forma exata valores que possam ser escritos na forma �  x / 2y

�  Valor : Representação:

�  1/3 0.01010101[01]2

�  1/5 0.001100110011[0011]2

�  1/10 0.0001100110011[0011]2

Page 5: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Cálculo da parte irracional

�  Multiplicações consecutivas por 2 até achar o periódico

�  Exemplo �  1/3 = 0.(3)10

�  0.(3) * 2 = 0.(6) Parte Inteira : 0

�  0.(6) * 2 = 1.(3) Parte Inteira : 1

�  0.(3) periódico

�  Logo 0.(3)10 = 0.(01)2

Page 6: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Cálculo da parte irracional

�  Exemplo �  1/5 = 0.210

�  0.2 * 2 = 0.4 Parte Inteira : 0 �  0.4 * 2 = 0.8 Parte Inteira : 0

�  0.8 * 2 = 1.6 Parte Inteira : 1 �  0.6 * 2 = 1.2 Parte Inteira : 1 �  0.2 (periódico)

�  Logo 0.210 = 0.(0011)2

Page 7: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Representação ponto fixo

�  Nesta representação fixamos o ponto binário num ponto pré-definido

�  Por exemplo, usando 8 bits ponto fixo �  #1 o ponto binário fica entre o bit 2 e o 3

�  b7b6b5b4b3[.]b2b1b0

�  #2 o ponto binário fica entre o bit 4 e o 5 �  b7b6b5[.]b4b3b2b1b0

�  Podemos representar até 31.625 no #1 e 7.96875 no #2

�  Há um compromisso entre precisão e a gama de valores que podemos representar

Page 8: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Representação fixa

�  Onde colocar o ponto fixo? �  Irá depender da precisão e da gama que queremos

representar

�  Na representação fixa existe um trade-off entre a gama de valores que se vai poder representar e a precisão dos valores �  + gama implica menos precisão e vise - versa

Page 9: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Ponto fixo num computador �  Exemplo com 8 bits

�  Queremos representar reais negativos e positivos

�  Utilizando �  1 bit para o sinal (vermelho)

�  3 para a parte inteira (azul)

�  4 para a parte fracionária (verde)

�  Exemplo 11.11 �  00111100

Page 10: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Valores representáveis (exemplo)

�  0 000 0001 = 1/16

�  0 000 0010 = 2/16

�  0 000 0011 = 3/16

�  ...

�  0 000 1111 = 15/16 (valor mais próximo de 1)

�  0 001 0000 = 1

�  ....

0 111 1111 = 7.9375

Page 11: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

... continuação �  A distância entre dois valores consecutivos no

exemplo anterior era sempre a mesma (1/16 = 0.0625)

�  Veremos mais à frente que no caso do ponto/vírgula flutuante o espaçamento não é sempre o mesmo.

Page 12: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Ponto Fixo

�  Prós �  Fácil e simples de usar

�  O mesmo hardware que faz a aritmética de inteiros também é capaz de fazer a aritmética de reais

�  Contras �  Não existe uma boa forma de escolher onde colocar o

ponto �  Ás vezes vamos querer mais precisão, outras vezes

queremos uma gama maior

Page 13: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Ponto Fixo vs. Vírgula flutuante (fp)

�  Ponto fixo �  Esta representação acaba por não ser muito usada

�  O standard para a representação binária de números reais é o “Floating Point” (FP) �  Permite flutuar o ponto binário da seguinte forma

�  Quando queremos representar números muito pequenos pedimos bits “emprestados” à parte inteira

�  Quando queremos representar números muito grandes pedimos bits “emprestados” à parte fracionária

Page 14: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Notação Científica

�  Durante o dia à dia deparamo-nos com situações em que podemos ter que lidar com números muito grandes e/ou muito pequenos �  Comprimento do diâmetro da terra

�  12 800 000 m

�  A massa de uma molécula de água �  0.00 000 000 000 000 000 000 00299g

�  Como se pode verificar, não é prático trabalhar com números com grandes quantidades de algarismos

�  No entanto, podemos escrever tais números usando potências de 10

Page 15: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Notação Científica

�  Molécula de água : 2.99 x 10 -23 g

�  Diâmetro da terra : 1.28 x 10 7 m

�  Facilita as operações aritméticas �  3 000 000 00 �  x 0.000 000 15 ?

�  Em notação científica �  3 x 108

�  x 1.5 x 10-7

�  = (3 * 1.5) * 10(8-7) = 4.5 x 101

Page 16: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Notação Científica

�  Em notação científica um número é representado na forma �  A x 10b

�  Em que b é um expoente inteiro �  A é um número real, chamado de significante ou

fracionário �  Se o número é negativo, coloca-se um sinal à esquerda

do A �  Este formato permite que o mesmo número possa

ser representado de várias formas diferentes �  Por exemplo 350 pode ser representado como:

�  3.5 x 102 �  35 x 10-1

�  350 x 100

Page 17: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Notação Científica Normalizada

�  Para facilitar a sua representação, impõe-se um formato específico �  Normalizado (1 <= |A| < 10)

�  No caso do 350, em notação científica normalizada ficava �  3.5 x 102 (1 <= |3| < 10)

�  Esta forma facilita comparações entre números, uma vez que o expoente b dá o número de ordem de magnitude

Page 18: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Notação Científica Normalizada

�  É mais fácil comparar

�  3.5 x 102 com 4.5 x 102

do que

�  35 x 101 com 4.5 x 102

Page 19: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Problema ?

�  Usando 7 algarismos, 5 para mantissa e 2 para expoente

�  Como representamos [0.0000E-99, 1.0000E-99 [? �  Na forma normalizada estamos a desperdiçar este

intervalo

�  Utilizamos a chamada Notação desnormalizada �  0.yyyy x 10exp

Page 20: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

De notação Científica para FP

�  A notação científica do tipo �  Valor = (-1)s x Mantissa x Radix exp

�  É das que permite a melhor representação dos números reais em vírgula flutuante

�  Radix é a base �  10 no decimal, e em binário pode ser 2 ou potências

de 2, mas vamos apenas focar em 2 que é o standard atual.

�  S é o sinal �  S -> 0 positivo = (-1)0 = 1

�  S -> 1 negativo = (-1)1 = -1

Page 21: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

... continuação

�  Mantissa será �  Y.xxxx (normalizada com 1 <= Y < radix)

�  0.xxxx (desnormalizada)

Page 22: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Floating point �  Vai nos permitir ao mesmo tempo representar

tanto valores muito grandes como muito pequenos (ao contrário do ponto fixo)

�  O truque é representar o número real na sua forma científica �  Ex.

�  25.7 x 10 4 = 257000

�  25.7 x 10-1 = 2.57 �  25.7 x 10-2 = 0.257

�  Como podemos ver o expoente é responsável pela flutuação do ponto decimal

�  No caso dos binários vai acontecer o mesmo em relação ao ponto binário

Page 23: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Floating point

�  Para podermos representar um número real no computador no mesmo estilo da representação científica �  Temos que fixar o ponto binário �  E flutuamos o ponto apenas mexendo no expoente

�  Iremos usar a forma normalizada �  Que no caso do binário será

�  1.F x 2exp

Page 24: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Floating point

�  Formato binário de um valor em fp usa 3 campos �  Sinal, S – Ficando mais à esquerda, permitirá usar o

mesmo hardware (que trabalha com inteiros) para testar o sinal de um valor em fp

�  Expoente, E – Ficando logo a seguir ao sinal �  Vai permitir fazer comparações quanto à grandeza entre

valores absolutos em fp, sem a necessidade de separar os 3 campos. Basta comparar os valores como se de valores meramente binários se tratasse

�  Parte Fracionária, F – É o campo mais à direita

Page 25: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Bit Escondido

�  Sabemos que um valor normalizado tem sempre o dígito mais à esquerda diferente de zero �  Se for no sistema decimal podemos ter 9 valores

diferentes �  Mas no binário só temos um valor possível = 1 �  Logo podemos omit i r este b i t durante a

representação interna de um fp em binário �  Ganha-se um bit extra para melhorar a precisão, este

bit será usado na parte fracionária

Page 26: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

A Norma IEEE 754 para fp

�  Estabeleceu em 1985 um standard para a aritmética e representação de floating points �  Antes desta norma havia diferentes formatos que

eram difíceis de combinar

�  Norma suportada pela grande maioria dos CPU atuais

�  Permiti portabilidade dos dados entre diferentes sistemas

Page 27: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Aspectos relevantes da norma IEEE 754

�  Representação do sinal �  bit mais à esquerda representa o sinal. 0 positivo, 1

negativo

�  Parte fracionária �  representamos o valor em absoluto �  Utiliza-se o bit escondido

�  Representação do expoente �  Para facilitar o processo de comparação de valores

(sem obrigar a separar campos) o expoente deverá ser codificado da seguinte forma

Page 28: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Aspectos relevantes da norma IEEE 754

�  Representação do expoente �  Para facilitar o processo de comparação de valores

(sem obrigar a separar campos) o expoente deverá ser codificado da seguinte forma �  Os valores menores do expoente (negativos) terão uma

representação binária menor do que os valores positivos (os maiores)

�  Sinal e amplitude?

�  Complemento para 1 ?

�  Complemento para 2 ?

�  Nenhum das 3 porque usam todas um 1 à esquerda para representar o sinal, o que torna os como números binários maiores do que os positivos

Page 29: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Representação do expoente

�  Utilização do Excesso �  Vai permitir que o padrão de bits todo a zeros

(00..00) seja o menor expoente, e o padrão de bits todo a 1’s (11..11) seja o maior expoente

�  Este excesso é calculado por 2n-1 -1 �  Sendo ‘n’ o número de bits reservado para o expoente

�  Visão global do formato �  [S | Expoente | Parte fracionária]

�  Expoente representado em excesso

�  Sendo os campos representados em binário

Page 30: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Norma IEEE 754

�  Valor decimal de um fp em binário (normalizado) é dado por �  V = (-1)s X (1.F) x 2(E – Excesso)

�  Em que S, F e E representam respectivamente os valores em binário do sinal, parte fracionária e o expoente em excesso, no formato em fp

�  Representação de valores desnormalizados �  A norma reserva o E = 0’s e o F ≠ 0’s

�  Para calcular o decimal utiliza-se a seguinte fórmula �  V = (-1)S x (0.F) x 2(1-Excesso)

�  O porquê de 1-Excesso? Será explicado mais à frente

Page 31: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Norma IEEE 754 (casos especiais)

�  Representação do zero �  E = 0’s e F= 0’s

�  Representação do infinito �  E = 1’s e F = 0’s

�  Se sinal = 0 -> +00

�  Se sinal = 1 -> - 00

�  Representação do NaN �  E = 1’s e F ≠ 0’s

�  Exemplo �  √-1

Page 32: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Norma IEEE 754

�  32 bits (vírgula flutuante de precisão simples) �  1 bit para sinal

�  8 bits para expoente �  23 bits para a parte fracionária

�  Excesso = 28-1 -1 = 127

�  64 bits (vírgula flutuante de precisão dupla) �  1 bit para sinal �  11 bits para expoente �  52 bits para a parte fracionária

�  Excesso = 211-1 – 1 = 1023

Page 33: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Exemplo Prático

�  Vamos usar um exemplo com 8 bits (apenas para feitos pedagógicos) que segue as mesmas regras que a norma 574 do IEEE

�  Vamos utilizar �  1 bit para sinal

�  3 bits para expoente

�  4 bits para a parte fracionária

Page 34: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Passar de decimal para representação binária fp

�  Número : 0.5625

�  1) Converter para binário �  0.1002

�  2) Normalizar o binário �  1.0012 x 2 -1

�  3) Identificar o sinal do valor �  Positivo => S = 0

�  0 _ _ _ _ _ _ _

Page 35: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

... continuação

�  4) Representação da mantissa sem bit escondido �  0012

�  0 _ _ _ 0010

�  5) Calcular o expoente a ser gravado (E) �  Calcular o Excesso : 2n-1 -1 = 22 – 1 = 3 �  E = expoente + excesso = -1 + 3 = 2

�  Converter E para binário 210 = 102

�  0.5625 em formato binário de fp fica �  0 010 0010

Page 36: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Fp para decimal

�  Utilizamos a fórmula �  V = (-1) S x 1.F x 2(E – excesso)

�  Calcular o valor decimal de 0 010 0010 �  S = 0 (bit + à esq.)

�  F = 00102

�  E = 0102 = 210

�  Temos que retirar do expoente gravado (E) o excesso

�  Uma vez que o expoente é gravado com o excesso, agora é necessário retirá-lo para fazer o processo inverso

�  Expoente = 2 – 3 = -1

Page 37: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

... continuação

�  Substituímos na fórmula

�  V = (-1)0 x 1.0012 x 2(2 – 3)

�  = 1 x 1.0012 x 2-1

�  = 1.0012 x 0.5

�  = 0.5005 ??? Porque é que não deu 0.5625?

�  Não podemos multiplicar o binário pelo decimal

�  = 1.0012 x 2-1 = 0.10012 = 0.5625

�  Ou 1.0012 x 0.510 = 1.12510 x 0.510 = 0.5625

Page 38: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Casos especiais

�  1 111 0000 ? �  E = 1’s, F = 0’s e S = 1 => -00

�  0 111 0000 ?

�  E = 1’s, F = 0’s e S = 1 => +00

�  Não vale a pena tentar converter as sequencias acima porque não faz sentido. Estes padrões de bits estão reservados pela norma IEEE 754 para representar infinito

Page 39: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

... continuação

�  0 111 0010 ? �  E = 1’s e F ≠ 0’s => NaN

�  Significa que o maior valor que podemos representar neste formato será ? �  0 110 1111

�  Neste caso (-1)0 x (1.1111) x 2 (6-3) = 15.5

�  E não pode ser 111 senão o valor seria NaN

�  0 000 0000 �  E = 0’s e F = 0’s a norma diz que o valor é zero

Page 40: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Desnormalizados

�  Maior positivo desnormalizado ? �  0 000 1111

�  Menor número positivo desnormalizado? �  0 000 0001

�  O porquê do Expoente ser 1 – Excesso? �  Desta forma o salto entre o maior desnormalizado e o

menor normalizado positivo é o mesmo que entre dois valores desnormalizados consecutivos

Page 41: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

FP valores �  0 000 0001 = 1/64

�  0 000 0010 = 2/64

---

�  0 000 1111 = 15/64

De notar que nos desnormalizados a distância entre dois valores consecutivos é sempre a mesma (neste caso 1/64)

�  0 001 0000 = 16/64 = 0.25 (normalizados)

�  0 001 1111 = 31/64

�  0 010 0000 = 0.5

�  Parte interessante é que agora a distância entre 2 valores consecutivos dobrou. Então sempre que o expoente aumenta a distância entre dois valores aumenta

Page 42: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Porque deste comportamento?

�  A ideia é que os valores mais próximo de zero terão mais precisão.

�  Enquanto os valores mais afastados terão menos precisão, mas em compensação permitirá representar uma maior gama de valores

Page 43: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

72 CHAPTER 2. REPRESENTINGAND MANIPULATING INFORMATION

Description Bit Rep.Zero 0 0000 000Smallest Pos. 0 0000 001

0 0000 0100 0000 011

0 0000 110Largest Denorm. 0 0000 111Smallest Norm. 0 0001 000

0 0001 001

0 0110 1100 0110 111

One 0 0111 0000 0111 0010 0111 010

0 1110 110Largest Norm. 0 1110 111Infinity 0 1111 000 – – – –

Figure 2.23: Example Nonnegative Values for eight-bit Floating-Point Format. There are expo-nent bits and significand bits. The bias is .

Sumário

Legenda: e – expoente em excesso; E – expoente; f – parte fracionária; M – mantissa (incluído o bit escondido); V – valor real; Excesso = 7; Desnormalizados : V = (-1)s x 0.F x 2(1- excesso)

Normalizados : V = (-1)s x 1.F x 2(e - excesso)

Page 44: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar
Page 45: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Referências

�  Material de apoio do Prof. Alberto Proença - Universidade do Minho �  http://gec.di .uminho.pt/lcc/sc0809/

Acetatos/RepresNum_Mar04.pdf

�  Floating Point �  The Basics : http://www.cs.uwm.edu/~cs151/Bacon/

Lecture/HTML/ch03s10.html

�  What every computer scientist should know about Floating point Arithmetic: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

Page 46: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M2.pdf · 4b 3[.]b 2b 1b 0 ! #2 o ponto binário fica entre o bit 4 e o 5 ! b 7b 6b 5[.]b 4b 3b 2b 1b 0! Podemos representar

Referências

�  Computer System: A Programmer’s Perspective, 2/E (CS: APP2e). Randal E. Bryant and David R. O'Halloran, Carnegie Mellon University

�  Introduction to Computer Systems, Randy Bryant and Dave O'Halloran