Você está na página 1de 47

Aritmtica binria: ponto fixo e ponto flutuante

Profa. Amanda Drielly Pires Venceslau


driellyads@gmail.com

A Informao e sua Representao

Em um computador so armazenados e processados


apenas dados e instrues.

Um computador executa operaes sobre dados


numricos (os nmeros) ou alfabticos (letras e
smbolos).

preciso definir uma forma de representar os dados,


codificados em uns e zeros, que possam ser
interpretados pelo computador, de forma correta e
eficiente (com bom desempenho e pouco consumo de
memria).

A Informao e sua Representao


Os dados podem ser:

Alfabticos

Numricos

letras, nmeros e smbolos (codificados em ASCII e


EBCDIC)

ponto fixo, nmeros inteiros


ponto flutuante (nmeros reais ou fracionrios)
BCD (representao decimal codificada em binrio)

Lgicos

Variveis que possuem apenas dois


representao (FALSO e VERDADEIRO).

valores

para

Tpicos

Representao da Informao
Nmeros

Inteiros (Complemento de 2)
Nmeros Reais (Ponto Flutuante)
Nmeros em BCD

Representao de Nmeros Inteiros

Todos os dados numricos so representados em um


computador como uma sequncia de 0s e 1s.

Os nmeros podem ser positivos ou negativos. As


operaes aritmticas, em particular a subtrao,
podem originar resultados negativos.

Um aspecto primordial a ser definido seria ento como


representar o sinal.

Como que um computador sabe que um dado


nmero negativo?

Representao de Nmeros Inteiros

A resposta a esta pergunta que isso depende da


conveno usada na representao de nmeros.

As convenes mais usuais so as seguintes :

Representao de grandeza com sinal (sinal e magnitude)


Representao em complemento de 2

Representao de grandeza com sinal

O bit mais significativo representa o sinal:

0 (indica um nmero positivo)

1 (indica um nmero negativo)

Os demais bits representam a grandeza (magnitude).

O valor dos bits usados para representar a magnitude


independe do sinal (sendo o nmero positivo ou negativo,
a representao binria da magnitude ser a mesma).

Representao de grandeza com sinal

Exemplos: (8 bits)

Representao de grandeza com sinal

Apresenta uma grande desvantagem: ela exige


um grande nmero de testes para se realizar uma
simples soma de dois nmeros inteiros.

Requer que na UAL existam dois circuitos


distintos para a adio e a subtrao.

Existem duas representaes para o zero.

Representao em complemento de 2

Representao de nmeros inteiros positivos

igual representao de grandeza com sinal.

Representao de nmeros inteiros negativos

mantm-se os bits menos significativos da direita para a esquerda at


ocorrncia do primeiro bit igual a 1 (inclusive), sendo os bits restantes
complementados de 1.

Representao em complemento de 2

Requer um s circuito (somador) para fazer a adio e a


subtrao.

H apenas uma representao para o valor 0


(disponibilidade para mais uma representao) - mais
um nmero negativo pode ser representado (para 8 bits,
pode-se representar o nmero 128 D 10000000 B).

A quantidade de nmeros positivos diferente da


quantidade de nmeros negativos.

Representao de Nmeros Inteiros

Exemplo:

Escreva os nmeros decimais abaixo nas seguintes representaes:


sinal e magnitude; representao em complemento de 1;
representao em complemento de 2 e excesso de 128 (utilizando 8
bits, se existir representao).

a) -1

b) 20

Representao de Nmeros Inteiros

Nmeros negativos de 8 bits expressos em 4 sistemas diferentes

Representao de Nmeros Inteiros

Haver sempre um padro de bits a mais ou a menos, no


importa qual a representao escolhida.
O padro de bits extra pode ser usado como 0, como o
menor nmero negativo da representao, ou algo assim,
mas, independentemente de como esse padro de bits for
usado, ele poder ser um estorvo.

Representao de Nmeros Reais

Em alguns tipos de clculo, a faixa de variao dos


nmeros envolvidos muito grande.
Exemplo:

1) Massa do eltron - da ordem de 9 x 10-28 gramas

2) Massa do Sol - aproximadamente igual a 2 x 1033 gramas

Faixa de variao: > 1060

Exemplo de representao (34 dgitos esquerda do ponto decimal e 28


dgitos direita do mesmo)

Como representar esses nmeros no computador?

Representao de Nmeros Reais

Forma usual de representao de nmeros reais:

parte inteira, vrgula (ou ponto), parte fracionria.

Esta representao, embora cmoda para clculos no


papel, no adequada para processamento no
computador.

Exemplo: 45,724

Representao de Nmeros Reais

O nmero 45,724 pode ser expresso como:

necessrio o uso de um sistema de representao de


nmeros no qual a faixa de variao dos nmeros seja
independente do nmero de dgitos significativos dos
nmeros representados.

Representao em ponto flutuante

Uma maneira de separar a faixa de variao dos nmeros de sua


preciso consiste em represent-lo na notao cientfica.

f - frao ou significando (ou mantissa)


e - expoente (inteiro positivo ou negativo)

Qualquer nmero (inteiro ou fracionrio) pode ser expresso no formato

, podendo-se variar a posio da vrgula e o expoente.

Denominao (computacional): representao em ponto flutuante (o


ponto varia sua posio, modificando, em consequncia, o valor
representado).

Representao em ponto flutuante

Representao pode variar (flutuar) a posio da


vrgula, ajustando a potncia da base.
Exemplos:

A faixa de variao dos nmeros determinada pela


quantidade de dgitos do expoente e a preciso
determinada pela quantidade de dgitos do significando.

Representao em ponto flutuante

Forma normalizada: usa um nico dgito antes da vrgula,


diferente de zero (*).
Na representao computacional de nmeros em ponto
flutuante, a representao normalizada , em geral, melhor
que a no-normalizada.

Forma normalizada: s existe uma forma de representar um nmero.

Forma no normalizada: um mesmo nmero pode ser representado de


diversas maneiras.

Representao em ponto flutuante

Ilustrao:
No sistema binrio:

Nmeros armazenados em um computador os expoentes sero


tambm gravados na base dois

Representao normalizada - h apenas um 1 antes da vrgula

Representao em ponto flutuante

Algumas definies:

OBS:
a base binria no precisa ser explicitada (o computador usa
sempre esta)
O 1 antes da vrgula, na representao normalizada se esta for
adotada, tambm pode ficar implcito, economizando um bit (bit
escondido)

Armazenamento de Floats / ponto flutuante

Na organizao/arquitetura do computador,
deve-se definir:
Nmero

de bits do significando (preciso, p ou f)


Nmero de bits do expoente (e)
Um bit (0 para + e 1 para -) de sinal
(tipicamente o primeiro, da esquerda)

Armazenamento de Floats / ponto flutuante

Ilustrao (8 bits)

Sinal

do nmero: 0 = + e 1 = Expoentes: 8 combinaes possveis


OBS:

No seguem aritmtica normal (p.ex.: Utiliza


notao em excesso)

Armazenamento de Floats / ponto flutuante

Armazenamento de Floats / ponto flutuante

Exemplo: Realize as converses abaixo:

Armazenamento de Floats / ponto flutuante

Soluo:

Armazenamento de Floats / ponto flutuante

Soluo:

O Padro IEEE 754 para Nmeros em Ponto Flutuante

At meados dos anos 1980, cada fabricante de computador tinha


seu prprio formato para representar nmeros em ponto flutuante.
Soluo: criao do Padro 754 (IEEE 1985).

O Padro IEEE 754 procurou uniformizar a maneira como as


diferentes mquinas representam os nmeros em ponto flutuante,
bem como devem oper-los.

O padro IEEE 754 para ponto (vrgula) flutuante a representao


mais comum para nmeros reais em computadores de hoje,
incluindo PC's compatveis com Intel, Macintosh, e a maioria das
plataformas Unix/Linux.

O Padro IEEE 754 para Nmeros em Ponto Flutuante

O padro IEEE 754 define trs formatos:

Preciso simples (32 bits)


Preciso dupla (64 bits)
Preciso estendida (80 bits)

Os formatos de preciso simples e preciso


dupla usam a base 2 para o significando e a
notao em excesso para o expoente.

O Padro IEEE 754 para Nmeros em Ponto Flutuante

O Padro IEEE 754 para Nmeros em Ponto Flutuante

O Padro IEEE 754 para Nmeros em Ponto Flutuante

Ilustrao

Expoentes na preciso simples c/256 combinaes

O Padro IEEE 754 para Nmeros em Ponto Flutuante

Exemplo: Realize as converses abaixo:

O Padro IEEE 754 para Nmeros em Ponto Flutuante

Soluo:

O Padro IEEE 754 para Nmeros em Ponto Flutuante

Soluo:

O Padro IEEE 754 para Nmeros em Ponto Flutuante

Ilustrao:

Expoentes na preciso dupla

Representao em Ponto Flutuante

A representao em ponto flutuante tem


limites de alcance e de preciso.

O alcance limitado pelo nmero de bits do


expoente.

A preciso determinada pelo nmero de


bits do significando.

Representao em Ponto Flutuante

Ocorre overfllow quando o valor absoluto do dado a ser


representado excede a capacidade de representao,
porque o nmero de bits do expoente (neste caso,
positivo) insuficiente para representar o dado.

Ocorre underfllow quando o valor absoluto do dado a


ser representado to pequeno que fica menor que o
menor valor absoluto representvel.

No caso de impreciso, a normalizao permite que o


dado seja representado, porm com perda de preciso.

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

A representao de nmeros reais em ponto flutuante


perfeitamente adequada para fazer clculos matemticos,
cientficos, etc.

Na representao em ponto flutuante pode-se ter perda de


preciso do nmero representado ou mesmo haver
nmeros que no podem ser representados por overflow.

Para representao de nmeros em que necessrio


manter preciso at o ltimo algarismo, no admissvel
erro por aproximao.

Soluo: usar a representao BCD ou Binary Coded


Decimal (Decimal Representado em Binrio).

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

A ideia do BCD representar, em binrio, cada


algarismo de forma que o nmero original seja
integralmente preservado.

A codificao BCD no possui extenso fixa,


possibilitando representar nmeros com preciso
varivel - quanto maior o nmero de bits, maior ser a
preciso.

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

A codificao de um dgito em BCD requer 4 bits.


Como a utilizao de apenas 4 bits por byte no
eficiente, normalmente so armazenados 2 dgitos BCD
em um s byte. Esta representao chamada BCD
comprimido ou compactado ("packed BCD").

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

Entre os algarismos sem cdigo vlido em decimal


(cdigos representativos dos valores decimais de 10 a
15), comum utilizar alguns deles para indicar o sinal
do nmero.

H sistemas que adotam a seguinte conveno para o


sinal dos nmeros representados em BCD:

1100 representa o sinal positivo (+)


1101 representa o sinal negativo (-)

Representao de Nmeros Decimais


Codificados em Binrio (BCD)

Como nesta representao ainda h um desperdcio de


cdigos; como BCD usa 4 bits (16 representaes
possveis) para representar 10 algarismos, 6 (ou 4)
cdigos no so utilizados.

Portanto, essa representao menos eficiente em


relao utilizao dos recursos do computador que a
representao em ponto flutuante.

A informao e sua Representao


Observaes Representao em Ponto Fixo

Na maioria das linguagens de programao e nos sistemas


de computao (e os compiladores da maior parte das
linguagens de programao) emprega-se a representao de
nmeros em ponto fixo para indicar apenas valores inteiros
(a vrgula fracionria assumida na posio mais direita do
nmero); nmeros fracionrios so, nesses casos,
representados apenas em ponto flutuante.
Exemplos de tipos de dados na linguagem Java:
Tipo de dado
Representao interna
int
Ponto fixo (inteiro)
float
Ponto flutuante (real)