• Nenhum resultado encontrado

Armazenamento de Números em Ponto Flutuante

N/A
N/A
Protected

Academic year: 2019

Share "Armazenamento de Números em Ponto Flutuante"

Copied!
26
0
0

Texto

(1)

Introdução à Programação

Prof. Carlos Andrés Ferrero

Armazenamento de Números em

Ponto Flutuante

(2)

Números em Ponto Flutuante

Um Número Real possui:

– Uma parte inteira e

– Uma parte fracionária

Por ex. o valor (122,324) possui:

– Parte inteira: 122

(3)

Números em Ponto Flutuante

Ao tentarmos usar uma representação com ponto

(vírgula) fixo, teríamos que fixar um número de

bits à direita e outro à esquerda.

– Suponha que o computador conseguisse armazenar números do sistema decimal de 8 algarismos, sendo 5 para a parte inteira e 3 para a parte fracionária;

– Por ex. (178,12)10

𝑆5 𝑆3 𝑆2 𝑆1 𝑆0 . 𝑆−1 𝑆−2 𝑆−3

Decimal 1 7 8 . 1 2

(4)

Números em Ponto Flutuante

Ao tentarmos usar uma representação com ponto

(vírgula) fixo, teríamos que fixar um número de

bits à direita e outro à esquerda.

– Suponha que o computador conseguisse armazenar números do sistema decimal de 8 algarismos, sendo 5 para a parte inteira e 3 para a parte fracionária;

– Por ex. 212178,12 10

𝑆5 𝑆3 𝑆2 𝑆1 𝑆0 . 𝑆−1 𝑆−2 𝑆−3

Decimal 1 7 8 . 1 2

(5)

Números em Ponto Flutuante

Ao tentarmos usar uma representação com ponto

(vírgula) fixo, teríamos que fixar um número de

bits à direita e outro à esquerda.

– Suponha que o computador conseguisse armazenar números do sistema decimal de 8 algarismos, sendo 5 para a parte inteira e 3 para a parte fracionária;

– Por ex. 178,1296 10

– Não pode ser representado! Faltou um algarismo. 𝑆5 𝑆3 𝑆2 𝑆1 𝑆0 . 𝑆−1 𝑆−2 𝑆−3

Decimal 1 7 8 . 1 2

(6)

Números em Ponto Flutuante

• O problema de fixarmos um ponto (vírgula) é que temos que limitar ambos os lados, os quais podem ou não ser utilizados

• Assim, além de um problema de limite de representação, haveria um problema de desperdício de memória

(7)

Números em Ponto Flutuante

• Para isso temos que lembrar da notação científica no sistema decimal

• Ex.: mostre o número 7500 em notação científica

7,5 × 103, pois movendo vírgula 3 posições à direita forma o

valor do enunciado, 7500

• Ex.: mostre o número 7425000000000

(8)

Números em Ponto Flutuante

• Para isso temos que lembrar da notação científica no sistema decimal

• Ex.: mostre o número 0,00541 em notação científica

5,41 × 10−3, pois movendo a vírgula 3 posições à esquerda

obtemos o valor 0,00541

• Ex. 19: mostre o número - 0,0000000000000232

−2,32 × 10−14, pois deslocando 14 posições à esquerda

(9)

Números em Ponto Flutuante

• Para o sistema binário funciona muito parecido:

• Ex.: mostre o número 10101012 em notação científica

1,010101 × 26, pois movendo a vírgula 6 posições à direita

obtemos o valor 10101012

• Ex. 21: mostre o número −0,0000011101110012

−1,110111001 × 2−6, pois deslocando 6 posições à esquerda

obtemos o valor do enunciado

(10)

Números em Ponto Flutuante

• Uma vez feita a Normalização devemos identificar três componentes

– Sinal: podendo ser representado por apenas um bit (0 ou 1)

– Expoente: define o deslocamento da vírgula

– Mantissa: parte fracionária do número, em que a vírgula fica implícita à esquerda

• Ex.: o valor 10101012 possui as seguintes componentes

+ 26 × 1,010101

(11)

Números em Ponto Flutuante

• Uma vez feita a Normalização devemos identificar três componentes

– Sinal: podendo ser representado por apenas um bit (0 ou 1)

– Expoente: define o deslocamento da vírgula

– Mantissa: parte fracionária do número, em que a vírgula fica implícita à esquerda

• Ex.: o valor −0,0000011101110012 possui as seguintes componentes

- 2−6 × 1,110111001

(12)

Números em Ponto Flutuante

Padrão IEEE 754-2011

– Sinal

Representado por um bit, sendo

– Zero (0) para positivo

– Um (1) para negativo

– Expoente

Representado em Sistema Excesso (a ser visto em breve)

(13)

Números em Ponto Flutuante

Sistema em Excesso

– O complemento de 2, para 4 bits, representa valores de -8 até 7

– O sistema excesso, para 4 bits, permitirá representar valores de -7 a 8

Consiste em somar

(2

𝑚−1

−1

) ao valor que

queremos representar

(14)

Números em Ponto Flutuante

Consiste em somar

(2

𝑚−1

−1)

ao valor que

queremos representar

– Ex.: representar o valor 6 em sistema de excesso com 4 bits de armazenamento (chamado de Excesso_7)

• m = 4

• Resultado = 6 + (2𝑚−1−1) = 6 + 7 = 1310

• Binário em excesso: 11012

– Ex.: na mesma memória representar o valor -7

(15)

Números em Ponto Flutuante

Represente o valor

5,75

10

em ponto flutuante de

32 bits (precisão simples) de acordo com a norma

IEEE 754-2011

– Sinal: 1 bit

– Excesso: 8 bits (excesso_127)

– Mantissa: 23 bits (inteiro sem sinal)

(16)

Números em Ponto Flutuante

Transformação do valor

5,75

10

(17)

Números em Ponto Flutuante

Transformação do valor

5,75

10

2. Mude o número para binário

• Parte inteira: 1012

• Parte fracionária: 0,112

• Resultado em binário: 101,112

(18)

Números em Ponto Flutuante

Transformação do valor

5,75

10

2. Mude o número para binário

• Parte inteira: 1012

• Parte fracionária: 0,112

• Resultado em binário: 101,112

3. Normalize

(19)

Números em Ponto Flutuante

Transformação do valor

5,75

10

4. Encontre os valores de Expoente e Mantissa

• O expoente 2 deve ser representado em Excesso_127

– Resultado: 2 + 127 = 129

– Em binário: 10000001

(20)

Números em Ponto Flutuante

Transformação do valor

5,75

10

4. Encontre os valores de Expoente e Mantissa

• A mantissa deve ser representada como inteiro sem sinal

(21)

Números em Ponto Flutuante

Transformação do valor

5,75

10

4. Encontre os valores de Expoente e Mantissa

• A mantissa deve ser representada como inteiro sem sinal

– Resultado: 0111

• Completar com zeros à direita da mantissa

(22)

Números em Ponto Flutuante

Mostre o valor

10,1

10

usando precisão simples

1. Sinal negativo: valor 1

2. Número em binário: 1010,0 0011

3. Normalização: 1,0100 0011 × 23

4. Componentes:

• Expoente em Excesso_127: 3 + 127 = 130 = 10000010

• Mantissa: 010000110011001100110011 (24 bits)

(23)

Números em Ponto Flutuante

Mostre o valor

10,1

10

usando precisão simples

1. Sinal negativo: valor 1

2. Número em binário: 1010,0 0011

3. Normalização: 1,0100 0011 × 23

4. Componentes:

• Expoente em Excesso_127: 3 + 127 = 130 = 10000010

• Mantissa: 010000110011001100110011 (24 bits)

• Reduzindo para 23 bits: 01000011001100110011010

Resultado

(24)

Ferramentas para conversão online

– IEEE 754 Converter

(25)

Exercícios

Converter os seguintes valores para Compl 2.

usando 16 bits.

 154310

 -14310

 -102410

(26)

Exercícios

Converter os seguintes números reais para ponto

flutuante de precisão simples (32 bits) conforme

norma IEEE 754-2011

 -1010

 29610

 1200,312510

Referências

Documentos relacionados

Janeiro para o Espírito Santo e depois para Santa Catarina, buscando novos negócios, foi outro fator de diferenciação entre Victorino e muitos dos outros

Desta forma, a qualidade higiênico-sanitária das tábuas de manipulação dos Laboratórios de Técnica Dietética, Tecnologia de Alimentos e Gastronomia e das

Deve conhecer perfeitamente este Manual de Procedimentos ou “Bússola”, e o papel de cada ministério da Equipe de Serviço; assim como o Esquema do Curso

Essas estruturas são chamadas de rizoides, cauloides e filoides porque não têm a mesma organização de raízes, caules e folhas dos demais grupos de plantas (a partir

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Pretendeu-se com este trabalho, investigar o que é necessário para se desenvolver um ensino em Educação Física que considere os valores morais como fundamentais para a

Embora não tenha encontrado diferença significativa entre os tratamentos de polinização cruzada e autopolinização em 96 horas após as polinizações, os óvulos de pistilos

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos