Ponto Fixo e Ponto Flutuante

Documentos relacionados
Estouro e Representação em Ponto Flutuante

Aula 9: Estouro e Representação em Ponto Flutuante

Aula 9: Estouro e Representação em Ponto Flutuante

Arquitetura e Organização de Computadores

PARTE I I: ARITMÉTICA COMPUTACIONAL ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Organização de Computadores I

Arquitetura e Organização de Computadores

étodos uméricos Erros Visão Geral Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Ponto Flutuante IEEE 754

Aula 11. A Informação e sua Representação Ponto-Flutuante. Prof. Dr. Dilermando Piva Jr.

William Stallings Arquitetura e Organização de Computadores 8 a Edição

ARQUITETURA DE COMPUTADORES

Métodos Numéricos Erros Ponto Flutuante. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

Dessa forma pode-se transformar qualquer número em qualquer base para a base 10.

TP062-Métodos Numéricos para Engenharia de Produção Erros-Ponto Flutuante

Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária

Aula 3 - Representação de Dados

Arquitetura de Computadores

Aritmética dos Computadores

ARQUITETURA DE COMPUTADORES

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Sistemas numéricos e a Representação Interna dos Dado no Computador

Home Programa Exercícios Provas Professor Links. 2.1 Representação de um número na base dois. O número binário 101,101 significa, na base dois:

Números binários e erros

Números Binários. Apêndice A V1.0

Capítulo 2. Representação de números em vírgula flutuante

SISTEMA DE NUMERAÇÃO. Introdução a Informática. Vinícius Pádua

Organização e Arquitetura de Computadores I

REPRESENTAÇÃO DE DADOS. Prof. Maicon A. Sartin

Sistemas de Numeração. Exemplos de Sistemas de Numeração (1) Exemplos de Sistemas de Numeração (2) Sistemas de Numeração

2. E presse cada um dos seguintes números inteiros decimais na representação sinal e magnitude e complemento a 2, utilizando 8 bits Resposta:

Sistemas de Computação. Representação em Ponto Flutuante

6.1 Números Inteiros (Z) em Binário

Cálculo Numérico - Mat 215. Prof. Dirceu Melo. Prof. Dirceu Melo - MAT215

Representação de Números em Ponto Flutuante

Aula 7: Representações de Números Inteiros: Sinal e Magnitude e Representação em Excesso de k

Representações de Números Inteiros: Sinal e Magnitude e Representação em Excesso de k

Universidade Federal do Espírito Santo - UFES

Introdução à Computação

Cálculo Numérico Noções básicas sobre erros

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Disciplina: Introdução à Engenharia da Computação

Organização e Arquitetura de Computadores I

Sistemas de Computação. Seção Notas. Valores Interessantes. Notas. Ponto Flutuante. Haroldo Gambini Santos. 26 de abril de 2010.

Sistemas Digitais Módulo 3 Codificações BCD, Gray e ASCII e Números Fracionários

Circuitos Lógicos. Prof. Odilson Tadeu Valle

Cálculo Numérico. Erros em processamento Numéricos

1.1 Etapas na solução de um problema. 1.3 Tipos de erros. 1.4 Aritmética de ponto flutuante.

Infraestrutura de Hardware

Complemento a Um e Complemento a Dois

CÁLCULO NUMÉRICO (CN)

Unidade III. Sistemas Numéricos e o Computador

Aula 8: Complemento a Um e Complemento a Dois

CCI-22 CCI-22. Introdução e Motivação. Matemática Computacional. Conteúdo. Finalidade

Arquitectura de Computadores I

Aritmética Binária e Complemento a Base. Introdução ao Computador 2010/1 Renan Manola

CCI-22. Erros Erros de arredondamento, representação e de cálculo

Erros, Precisão Numérica e Ponto Flutuante

Baseado nos slides de Anna Tostes SISTEMA NUMÉRICO

Cálculo Numérico Conceitos Básicos

1.,Escreva o número -0, em notação científica.

Sistemas de Computação

Introdução à Computação

Cálculo Numérico. Conjunto de métodos utilizados para a obtenção de resultados de problemas matemáticos através de aproximações.

Arquitetura de Computadores

ELETRÔNICA DIGITAL I

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES REPRESENTAÇÃO NUMÉRICA. Cristina Boeres

Sistemas de Computação

Cálculo numérico Cálculo numérico - O Cálculo Numérico é uma metodologia para resolver problemas matemáticos através do computador. - Uma solução obti

Introdução à Computação

CCI-22 CCI-22. Introdução e Motivação. Matemática Computacional. Conteúdo. Finalidade. Carlos Henrique Q. Forster Conteúdo, Avaliação, Bibliografia

MAT115 Introdução ao Processamento de Dados Professor: Ibirisol Fontes Ferreira DCC: Departamento de Ciência da Computação

ARQUITECTURA DE COMPUTADORES

Números são números, letras são números e sinais de pontuação, símbolos e até mesmo as instruções do próprio computador são números.

Sistemas de Numeração

Representação de números - Conversão de base b para base 10

Erros e Aritmética de ponto flutuante

SISTEMAS DE NUMERAÇÃO CONVERSÕES ENTRE BASES. Prof. André Rabelo

CCI-22. Prof. Paulo André Castro Sala 110 Prédio da Computação

X. B Y Base do sistema de numeração Dígito do número em questão

Representação de números Conversão de base b para base 10

Lista de Exercícios 110 Bases numéricas (lista adaptada das listas do prof. Tiago Dezuo)

Notas de Aula Guilherme Sipahi Arquitetura de Computadores. Aritmética de Inteiros

Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer ÍNDICE. Aula 1- Introdução. Representação de números. Conversão de números

Representação de números - Conversão de base b para base 10

Métodos Numéricos - Notas de Aula

Representação e erros numéricos

Introdução. à Ciência da. Representação de Números em Ponto Flutuante. Aula 21. Números Fracionários

CCI-22. Matemática Computacional. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Aritmética Binária e Caminho de Dados. Aritmética Binária Caminho de Dados

Aula 4: Bases Numéricas

Sistemas Digitais INE 5406

Capacidade de Armazenamento. Bit. Binário para Decimal. Decimal para Binário. Operações Aritméticas no Sistema binário.

Base: número de símbolos empregados no sistema numérico.

CCI-22. Matemática Computacional. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Erros em computações numéricas

Representação e erros numéricos

Lista de Exercícios Sistemas de Numeração

Transcrição:

Ponto Fixo e Ponto Flutuante Arquitetura de Computadores

Introdução (1/2) É trivial para um computador atual tratar e operar com números inteiros. Entretanto, em muitas aplicações do dia a dia é necessário realizar operações com quantidades fracionárias, ou representar valores muito grandes ou muito pequenos. Para estas situações deve-se representar números em ponto fixo ou em ponto flutuante. Prof. Me. Newton Carlos Will 2

Introdução (2/2) De fato, a maioria dos computadores atuais já possui internamente uma (ou mais) unidade de ponto flutuante, para operar com números em notação científica. Prof. Me. Newton Carlos Will 3

Representação em Ponto Fixo (1/5) Para representar frações em ponto fixo, deve-se reservar certo número de bits para armazenar a parte fracionária. Naturalmente, a quantidade de bits utilizáveis para a parte inteira diminui de forma correspondente. Tomando como exemplo o número binário em complemento de 2 que corresponde ao número decimal 103. 0 1 1 0 0 1 1 1 Prof. Me. Newton Carlos Will 4

Representação em Ponto Fixo (2/5) Para a mesma cadeia de bits, tem-se os seguintes números, conforme a posição da vírgula: 0 1 1 0 0 1 1, 1 = 51,5 0 1 1 0 0 1, 1 1 = 27,75 0 1 1 0 0, 1 1 1 = 12,875 0 1 1, 0 0 1 1 1 = 3,21875 0, 1 1 0 0 1 1 1 = 0,8046875 Prof. Me. Newton Carlos Will 5

Representação em Ponto Fixo (3/5) Para uma determinada notação em ponto fixo, indica-se somente quantos bits são usados para a fração e quantos bits representam a parte inteira. Todos os números manipulados seguem então a mesma notação. Dos n bits utilizados para representar os números, empregam-se t bits (t 0) para a parte inteira e f bits (f 0) para a parte fracionária, com t + f = n. Prof. Me. Newton Carlos Will 6

Representação em Ponto Fixo (4/5) A quantidade total de valores representáveis permanece a mesma (2 n ), independentemente da posição da vírgula. A faixa de valores representáveis depende da posição da vírgula. Os números fracionários não são contínuos, mas sim, estão separados entre si por uma diferença igual a 2 -f. Prof. Me. Newton Carlos Will 7

Representação em Ponto Fixo (5/5) As operações de soma e subtração em ponto fixo são realizadas exatamente da mesma maneira que para números inteiros. Naturalmente, podem ser somados (ou subtraídos) apenas números que possuam a mesma posição para a vírgula. Entretanto, os números em ponto fixo com diferentes posições para a vírgula também podem ser operados, desde que um dos números seja convertido para a representação do outro. Prof. Me. Newton Carlos Will 8

Representação em Ponto Flutuante (1/5) A faixa de números que podem ser representados em ponto fixo é insuficiente para a maioria das aplicações científicas, onde existe a necessidade de representar números muito grandes e/ou números muito pequenos. Para contornar este problema, desenvolveu-se a notação científica, na qual um quintilhão é representado por 1,0 10 18, em vez de escrevê-lo por extenso. 1 000 000 000 000 000 000. Prof. Me. Newton Carlos Will 9

Representação em Ponto Flutuante (2/5) A representação de números em ponto flutuante é basicamente a versão binária da notação científica. A cada número em ponto flutuante estão associados, na realidade, três outros números: a mantissa m, o expoente e e a base b. No caso dos computadores atuais, a base utilizada é a binária, ou seja, b = 2. Prof. Me. Newton Carlos Will 10

Representação em Ponto Flutuante (3/5) O número em ponto flutuante é então calculado por: N = m b e Como a base é uma constante para um determinado sistema, o número em ponto flutuante é então representado por um par (m, e), onde m é uma fração ou um inteiro, e e é o expoente (sempre inteiro). Note que ambos, mantissa ou expoente, podem ser positivos ou negativos. Prof. Me. Newton Carlos Will 11

Representação em Ponto Flutuante (4/5) A precisão de um número em ponto flutuante é determinada principalmente pelo número de bits utilizados pela mantissa. A faixa de representação depende do número de bits do expoente. Prof. Me. Newton Carlos Will 12

Representação em Ponto Flutuante (5/5) Os números em ponto flutuante são inerentemente redundantes, no sentido de que um mesmo número pode ser representado de maneiras diferentes. Um quintilhão é representado por 1,0 10 18, ou 0,1 10 19, ou 100,0 10 16. Assim, é desejável que exista uma forma normalizada de representar um número. Para tanto utiliza-se somente mantissas normalizadas. Prof. Me. Newton Carlos Will 13

Normalização (1/2) Uma mantissa está normalizada quando é constituída somente de uma parte fracionária (não existe parte inteira) e quando o primeiro dígito à direita da vírgula é diferente de zero. Assim, a forma normalizada de representar um quintilhão é dada por 0,1 10 19. Prof. Me. Newton Carlos Will 14

Normalização (2/2) Na base binária, a normalização da mantissa exige que seus dois bits mais significativos sejam diferentes. Para números em complemento de 2, isso implica que o dígito mais significativo da mantissa e o bit de sinal sejam diferentes. Para números positivos a mantissa inicia por (0,1) 2. Para número negativos, por (1,0) 2. Um número não normalizado é normalizado facilmente por meio de deslocamentos da mantissa para a direita ou esquerda e incrementos ou decrementos do expoente, respectivamente. Prof. Me. Newton Carlos Will 15

Formatos de Números em Ponto Flutuante Existem diversos formatos adotados para representar os números em ponto flutuante. Muitos deles são específicos para uma família de computadores ou para um fabricante. Existe, porém, formato recomendado pelo IEEE (Institute of Electrical and Electronics Engineers), o IEEE 754. O bit de sinal é representado no bit mais significativo; os bits seguintes representam o expoente e os bits menos significativos são destinados à mantissa. Prof. Me. Newton Carlos Will 16

Formato IEEE para Ponto Flutuante (1/6) A IEEE define três formatos. Simples (32 bits) Duplo (64 bits) Quádruplo (128 bits) Sinal (S) 1 bit 1 bit 1 bit Expoente (E) 8 bits 11 bits 15 bits Mantissa (M) 23 bits 52 bits 112 bits Nesta notação, cinco grupos de números podem ser representados: Números normalizados, zero, números não normalizados, infinito e não números (NaN). Prof. Me. Newton Carlos Will 17

Formato IEEE para Ponto Flutuante (2/6) Os números normalizados utilizam um expoente que vai de 1 a 254 (ou 1 a 2046, ou 1 a 32766), o primeiro bit da mantissa é sempre zero e, por isso, não é representado. O valor do número é calculado por N = (-1) S 2 E-excesso M O excesso é definido em 127 para 32 bits, 1023 para 64 bits e 16383 para 128 bits. Prof. Me. Newton Carlos Will 18

Formato IEEE para Ponto Flutuante (3/6) O zero é representado por um número todo em zero (E = M = 0). Note que o zero neste caso pode ter sinal. S E M Valor 0 0000 0000 000 0000 0000 0000 0000 0000 +0 1 0000 0000 000 0000 0000 0000 0000 0000-0 Prof. Me. Newton Carlos Will 19

Formato IEEE para Ponto Flutuante (4/6) Números não normalizados possuem o expoente em zero (E = 0) e uma fração não zero. Seu uso é restrito para a representação de números que não podem ser normalizados sem causar underflow. Prof. Me. Newton Carlos Will 20

Formato IEEE para Ponto Flutuante (5/6) O infinito é representado pelo maior valor do expoente (E = 255 ou 2047 ou 32767) e por uma fração em zero (M = 0). Note que o infinito pode ter sinal. S E M Valor 0 1111 1111 000 0000 0000 0000 0000 0000 +Inf 1 1111 1111 000 0000 0000 0000 0000 0000 -Inf Prof. Me. Newton Carlos Will 21

Formato IEEE para Ponto Flutuante (6/6) Não números (NaN) são representados pelo maior expoente e por uma fração diferente de zero. Seu uso previsto inclui a indicação de códigos de erro, situações imprevistas, etc. S E M Valor 0 1111 1111 010 0000 0000 0000 0000 0000 NaN 1 1111 1111 010 0000 0000 0000 0000 0000 NaN Prof. Me. Newton Carlos Will 22

Soma e Subtração (1/3) Números em ponto flutuante, para serem somados ou subtraídos, devem apresentar o mesmo expoente. Neste caso, a soma ou subtração é realizada sobre as mantissas. O número resultado é formado com a mantissa resultado e o expoente dos operandos. Prof. Me. Newton Carlos Will 23

Soma e Subtração (2/3) Como os expoentes devem ser iguais antes de realizar a operação propriamente dita, expoentes diferentes precisam ser igualados. O menor dos expoentes deve ser igualado ao maior, e a mantissa correspondente a este expoente tem de ser convenientemente deslocada para a direita, de forma que o número representado pelo par (mantissa, expoente) não se altere. Prof. Me. Newton Carlos Will 24

Soma e Subtração (3/3) Como os números em ponto flutuante são armazenados na forma normalizada, após a operação a mantissa resultado deve ser normalizada por meio de deslocamentos para a esquerda (ou direita) e decrementos (ou incrementos) do expoente. Prof. Me. Newton Carlos Will 25

Exemplo Para entender na prática a conversão e soma de binários em ponto flutuante, vamos fazer um exemplo passo a passo. Utilizando o padrão IEEE 754, vamos efetuar a seguinte operação: 25,5 + 39,72. Prof. Me. Newton Carlos Will 26

Exemplo 1º Passo: transformar 25,5 em algo parecido com 1,x 2 y. Isso é alcançado através de divisões ou multiplicações: divisões quando o número é maior que 1 e multiplicações quando menor. O sinal de negativo do número, caso exista, deve ser ignorado. 25,5 / 2 = 12,75 12,75 / 2 = 6,375 6,375 / 2 = 3,1875 3,1875 / 2 = 1,59375 Prof. Me. Newton Carlos Will 27

Exemplo Ao final desta etapa, obtemos R1 = 1,59375 através de 4 divisões. Com isso, apenas encontramos outra forma de representar 25,5 que é: 1,59375 2 4 Prof. Me. Newton Carlos Will 28

Exemplo 2º Passo: calcular a mantissa baseado na parte fracionária de R1. Esse processo se dá sempre através de multiplicações sucessivas, até que o resultado seja 0, ou até um máximo de 23 multiplicações. Como R1 = 1,59375, logo, sua parte fracionária é 0,59375. 0,59375 2 = 1,1875 0,1875 2 = 0,375 0,375 2 = 0,75 0,75 2 = 1,5 0,5 2 = 1,0 0,0 2 = 0,0 Prof. Me. Newton Carlos Will 29

Exemplo Mantissa calculada = 100110. Como a quantidade de bits da mantissa ficou inferior à 23, completa-se o final com zeros até formar 23 dígitos. Mantissa final: 10011000000000000000000 Prof. Me. Newton Carlos Will 30

Exemplo 3º Passo: coletar as informações necessárias para criar a representação binária. Sinal: Positivo = 0. Se fosse negativo seria 1. Expoente: 4 (calculado no 1º passo). Porém, devido ao padrão estabelecido pela IEEE para números de ponto flutuante, esse expoente deve ser acrescido de 127. Assim: 4 + 127 = 131 = 10000011 Prof. Me. Newton Carlos Will 31

Exemplo 4º Passo: montar a representação binária. Basta juntar o sinal, o expoente e a mantissa coletados nos passos anteriores, para montar o valor de 32 bits que representa o valor inicial. Assim, a representação final é: 01000001110011000000000000000000 Prof. Me. Newton Carlos Will 32

Exemplo 5º Passo: efetuar os mesmos passos anteriores para o número 39,72. O número 39,72 pode ser representado em notação científica como: A mantissa calculada é: Sinal: Positivo = 0. 1,24125 2 5 00111101110000101001000 Prof. Me. Newton Carlos Will 33

Exemplo Expoente: 5 5 + 127 = 132 = 10000100 A representação final é: 01000010000111101110000101001000 Prof. Me. Newton Carlos Will 34

Exemplo 6º Passo: Igualar os expoentes Percebe-se que o expoente dos números não é o mesmo. 25,5 = 1,59375 2 4 39,72 = 1,24125 2 5 O menor dos expoentes deve ser igualado ao maior. Logo, 25,5 tem que ficar com expoente 5. Prof. Me. Newton Carlos Will 35

Exemplo A diferença entre os expoentes é 1. 5 4 = 1 Descola-se a mantissa 1 posição para a direita e iguala-se os expoentes. 10011000000000000000000 11001100000000000000000 1,59375 x 2 4 = 0,159375 x 2 5 Prof. Me. Newton Carlos Will 36

Exemplo Agora as representações dos dois números estão no mesmo expoente (5). 25,5 = 01000010011001100000000000000000 39,72 = 01000010000111101110000101001000 Prof. Me. Newton Carlos Will 37

Exemplo 7º Passo: efetuar a soma. Com os dois números no mesmo expoente, basta somar as mantissas. 0,11001100000000000000000 + 1,00111101110000101001000 10,00001001110000101001000 Nota-se que o resultado não ficou normalizado. Prof. Me. Newton Carlos Will 38

Exemplo 8º Passo: normalizar o resultado. Para normalizar o resultado, desloca-se a mantissa para a direita e elimina-se o bit excedente. 1,000001001110000101001000 Como a mantissa foi deslocada para a direita, incrementa-se o expoente. 10000100 + 1 = 10000101 Prof. Me. Newton Carlos Will 39

Exemplo Como resultado final, temos a seguinte representação: 01000010100000100111000010100100 Que equivale à notação científica: 1,0190625 2 6 Que denota o número decimal: 65,22 = 25,5 + 39,72 Prof. Me. Newton Carlos Will 40

Exemplo 9º Passo: extrair os campos. 01000010100000100111000010100100 Sinal: Expoente: Mantissa: 0 = Positivo 10000101 00000100111000010100100 Prof. Me. Newton Carlos Will 41

Exemplo 10º Passo: calcular o expoente real. (10000101) 2 = (133) 10 Devido ao padrão estabelecido pela IEEE para números de ponto flutuante, o expoente foi acrescido de 127 durante a conversão original. Por isso, deve-se remover 127 do expoente encontrado para obter o expoente real. 133 127 = 6 Prof. Me. Newton Carlos Will 42

Exemplo 11º Passo: calcular o valor decimal da mantissa. Basta multiplicar cada bit da mantissa pela potência de 2 correspondente àquela posição, e somar todos os resultados. Esse método é análogo a alguns métodos de conversão de números binários (inteiros) para decimal, com uma diferença: aqui todas as potências são negativas, pois está se calculando uma fração e não um número inteiro. O primeiro bit deve ser multiplicado por 2-1, o segundo por 2-2, o terceiro por 2-3, e assim por diante. Prof. Me. Newton Carlos Will 43

Exemplo 00000100111000010100100 0 2-1 = 0 0 2-13 = 0 0 2-2 = 0 0 2-14 = 0 0 2-3 = 0 0 2-15 = 0 0 2-4 = 0 1 2-16 = 0,0000152587890625 0 2-5 = 0 0 2-17 = 0 1 2-6 = 0,015625 1 2-18 = 0,000003814697265625 0 2-7 = 0 0 2-19 = 0 0 2-8 = 0 0 2-20 = 0 1 2-9 = 0,001953125 1 2-21 = 0,000000476837158203125 1 2-10 = 0,0009765625 0 2-22 = 0 1 2-11 = 0,00048828125 0 2-23 = 0 0 2-12 = 0 Prof. Me. Newton Carlos Will 44

Exemplo Somam-se todos os resultados diferentes de zero. 0,015625000000000000000 0,001953125000000000000 0,000976562500000000000 + 0,000488281250000000000 0,000015258789062500000 0,000003814697265625000 0,000000476837158203125 0,019062519073486328125 Prof. Me. Newton Carlos Will 45

Exemplo 12º Passo: montar a representação decimal. Basta juntar o sinal, o expoente e a mantissa, para montar o valor decimal na forma 1,x 2 y. Assim, a representação final é: +1,019062519073486328125 2 6 Ainda, pode-se calcular a potência e a multiplicação. 65,220001220703125 Prof. Me. Newton Carlos Will 46