Você está na página 1de 25

SISTEMAS DE NUMERAO

Sistemas de Numerao Posicionais

Desde quando se comeou a registrar informaes sobre quantidades, foram criados


diversos mtodos de representar as quantidades. Esse histrico pode ser encontrado em
Representao da Informao.

O mtodo ao qual estamos acostumados usa um sistema de numerao posicional. Isso


significa que a posio ocupada por cada algarismo em um nmero altera seu valor de
uma potncia de 10 (na base 10) para cada casa esquerda.

Por exemplo, no sistema decimal (base 10), no nmero 125 o algarismo 1 representa
100 (uma centena ou 10 ) , o 2 representa 20 (duas dezenas ou 1x10 ) e o 5 representa 5
2 1

mesmo (5 unidades ou 5x10 ). Assim, em nossa notao, 0

125 = 1x10 + 2x10 + 5x102 1 0

Base de um Sistema de Numerao


A base de um sistema a quantidade de algarismos disponvel na representao. A base
10 hoje a mais usualmente empregada, embora no seja a nica utilizada. No comrcio
pedimos uma dzia de rosas ou uma grosa de parafusos (base 12) e tambm marcamos o
tempo em minutos e segundos (base 60).

Os computadores utilizam a base 2 (sistema binrio) e os programadores, por facilidade,


usam em geral uma base que seja uma potncia de 2, tal como 2 (base 16 ou sistema 4

hexadecimal) ou eventualmente ainda 2 (base 8 ou sistema octal). 3

Na base 10, dispomos de 10 algarismos para a representao do nmero: 0, 1, 2, 3, 4, 5,


6, 7, 8 e 9. Na base 2, seriam apenas 2 algarismos: 0 e 1. Na base 16, seriam 16: os 10
algarismos aos quais estamos acostumados, mais os smbolos A, B, C, D, E e F,
representando respectivamente 10, 11, 12, 13, 14 e 15 unidades. Generalizando, temos
que uma base b qualquer dispor de b algarismos, variando entre 0 e (b-1).

A representao 125,38 (base 10) significa 1x10 + 2x10 + 5x10 + 3x10 + 8x10 :
10
2 1 0 -1 -2

Generalizando, representamos uma quantidade N qualquer, numa dada base b, com um


nmero tal como segue:

N = a .b + .... + a .b + a .b + a .b + a .b + a .b + .... + a .b sendo que


b n
n
2
2
1
1
0
0
-1
-1
-2
-2
-n
-n

a .b + .... + a .b + a .b + a .b a parte inteira e


n
n
2
2
1
1
0
0

a .b + a .b + .... + a .b a parte fracionria.


-1
-1
-2
-2
-n
-n

Intuitivamente, sabemos que o maior nmero que podemos representar, com n


algarismos, na base b, ser o nmero composto n vezes pelo maior algarismo disponvel
naquela base (ou seja, b-1). Por exemplo, o maior nmero que pode ser representado na
base 10 usando 3 algarismos ser 999 (ou seja, 10 - 1 = 999). 3
Generalizando, podemos ver que o maior nmero inteiro N que pode ser representado,
em uma dada base b, com n algarismos (n "casas"), ser N = b - 1. Assim, o maior
n

nmero de 2 algarismos na base 16 ser FF que, na base 10, equivale a 255 = 16 - 1.


16 10
2

Representao Binria
Os computadores modernos utilizam apenas o sistema binrio, isto , todas as
informaes armazenadas ou processadas no computador usam apenas DUAS
grandezas, representadas pelos algarismos 0 e 1. Essa deciso de projeto deve-se
maior facilidade de representao interna no computador, que obtida atravs de dois
diferentes nveis de tenso (ver discusso em Bits & Bytes). Havendo apenas dois
algarismos, portanto dgitos binrios, o elemento mnimo de informao nos
computadores foi apelidado de bit (uma contrao do ingls binary digit).

Na base 2, o nmero "10" vale dois. Mas se 10 = 2 , ento dez igual a dois?
2 10

No, dez no e nunca ser igual a dois!

Na realidade, "10" no significa necessariamente "dez". Ns estamos acostumados a


associar "10" a "dez" porque estamos acostumados a usar o sistema de numerao
decimal. O nmero
10 seria lido "um-zero" na base 2 e vale 2 (convertido para "dois" na base dez),
2 10

10 seria lido "um-zero" na base 5 e vale 5 (convertido para "cinco" na base dez),
5 10

10 pode ser lido como "um-zero" na base 10 ou ento como "dez" na base dez,
10

10 seria lido "um-zero" na base 16 e vale 16 (convertido para "dezesseis" na base


16 10

dez), etc.

Portanto, 10 s ser igual a dez se - e somente se - o nmero estiver representado


na base dez!

Uma curiosidade: o nmero "10 " vale sempre igual base, porque em uma dada base b
b

os algarismos possveis vo sempre de 0 a (b - 1)! Como o maior algarismo possvel em


uma dada base b igual a (b-1), o prximo nmero ser (b - 1 + 1 = b) e portanto ser
sempre 10 e assim, numa dada base qualquer, o valor da base ser sempre
representado por "10"!

Obs.: Toda vez que um nmero for apresentado sem que seja indicado em qual sistema
de numerao ele est representado, estenderemos que a base dez. Sempre que outra
base for utilizada, a base ser obrigatoriamente indicada.

Um dia pode ser que os computadores se tornem obrigatrios e sejamos todos forados
por lei a estudar a aritmtica em binrio! Mas, mesmo antes disso, quem programa
computadores precisa conhecer a representao em binrio! Vamos comear
entendendo as potncias de dois (calma, isso s o comeo, depois piora!):

Repr.Binria Potncia Repr.Decimal


1 2 0
1
10 2 1
2
100 2 2
4
1000 2 3
8
10000 2 4
16
100000 2 5
32
1000000 2 6
64
10000000 2 7
128
100000000 2 8
256
1000000000 2 9
512
10000000000 210
1.024

Depois (e s depois) de compreender bem a tabela acima, fazendo a devida correlao


com a representao decimal, conveniente decorar (aaaaaarrrrrrggggggghhhhhh!!!!!)
os valores da tabela. As converses entre base dois e base dez e as potncias de dois so
utilizadas a todo momento e seria perda de tempo estar toda hora convertendo. Da
mesma forma que, uma vez entendido o mecanismo da multiplicao, decoramos a
taboada, muito mais efetivo saber de cor a tabela acima que fazer as contas de
converso toda vez que for necessrio.

A representao binria perfeitamente adequada para utilizao pelos computadores.


No entanto, um nmero representado em binrio apresenta muitos bits, ficando longo e
passvel de erros quando manipulado por seres humanos normais como por exemplo os
programadores, analistas e engenheiros de sistemas (bem, no to normais assim ...).
Para facilitar a visualizao e manipulao por programadores de grandezas processadas
em computadores, so usualmente adotadas as representaes octal (base 8) e
principalmente hexadecimal (base 16). Ressaltamos mais uma vez que o computador
opera apenas na base 2 e as representaes octal e hexadecimal no so usadas no
computador, elas se destinam apenas manipulao de grandezas pelos programadores.

Representao em Octal e em Hexadecimal


Em projetos de informtica (isto , nos trabalhos realizados pelos programadores,
analistas e engenheiros de sistemas), usual representar quantidades usando sistemas
em potncias do binrio (octal e principalmente hexadecimal), para reduzir o nmero de
algarismos da representao e conseqentemente facilitar a compreenso da grandeza e
evitar erros. No sistema octal (base 8), cada tres bits so representados por apenas um
algarismo octal (de 0 a 7). No sistema hexadecimal (base 16), cada quatro bits so
representados por apenas um algarismo hexadecimal (de 0 a F).

A seguir, apresentamos uma tabela com os nmeros em decimal e sua representao


correspondente em binrio, octal e hexadecimal:

Base 10 Base 2 Base 8 Base 16


0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

Nota: a base 16 ou sistema hexadecimal pode ser indicada tambm por um "H" ou "h"
aps o nmero; por exemplo: FFH significa que o nmero FF (ou 255 em decimal) est
em hexadecimal. No confundir o "H" ou "h" com mais um dgito, mesmo porque em
hexadecimal s temos algarismos at "F" e portanto no existe um algarismo "H".

Exemplo: Como seria a representao do nmero 16 em binrio, octal e hexadecimal?


10

Soluo: Seria respectivamente 10000 , 20 e 10 . 2 8 16

SISTEMAS DE NUMERAO

Converses entre Bases


Vamos analisar agora as regras gerais para converter nmeros entre duas bases
quaisquer.

Converses entre as bases 2, 8 e 16


As converses mais simples so as que envolvem bases que so potncias entre si.
Vamos exemplificar com a converso entre a base 2 e a base 8. Como 2 = 8, separando 3

os bits de um nmero binrio em grupos de tres bits (comeando sempre da direita para
a esquerda!) e convertendo cada grupo de tres bits para seu equivalente em octal,
teremos a representao do nmero em octal. Por exemplo:

10101001 = 10.101.001 (separando em grupos de 3, sempre comeando da direita para


2 2

a esquerda)
Sabemos que 010 = 2 ; 101 = 5 ; 001 = 1 portanto 10101001 = 251
2 8 2 8 2 8 2 8

Se voc ainda no sabe de cor, faa a converso utilizando a regra geral. Vamos agora
exemplificar com uma converso entre as bases 2 e 16. Como 2 = 16, basta separarmos 4

em grupos de 4 bits (comeando sempre da direita para a esquerda!) e converter. Por


exemplo:

11010101101 = 110.1010.1101 (separando em grupos de 4 bits, sempre comeando da


2 2

direita para a esquerda)


Sabemos que 110 = 6 ; 1010 = A ; 1101 = D ; portanto 11010101101 = 6AD
2 16 2 16 2 16 2 16

Vamos agora exercitar a converso inversa. Quanto seria 3F5H (lembrar que o H est
designando "hexadecimal") em octal? O mtodo mais prtico seria converter para
binrio e em seguida para octal.
3F5H = 11.1111.0101 (convertendo cada dgito hexadecimal em 4 dgitos binrios) =
2

= 1.111.110.101 (agrupando de tres em tres bits) =


2

= 1765 (convertendo cada grupo de tres bits para seu valor equivalente em octal).
8

Converso de Nmeros em uma base b qualquer para a base 10


Vamos lembrar a expresso geral j apresentada:

N = a .b + .... + a .b + a .b + a .b + a .b + a .b + .... + a .b
b n
n
2
2
1
1
0
0
-1
-1
-2
-2
-n
-n

A melhor forma de fazer a converso usando essa expresso. Tomando como exemplo
o nmero 101101 , vamos calcular seu valor representado na base dez. Usando a
2

expresso acima, fazemos:

101101 = 1x2 + 0x2 + 1x2 + 1x2 + 0x2 + 1x2 = 32 + 0 + 8 + 4 + 0 + 1 = 45


2
5 4 3 2 1 0
10

Podemos fazer a converso de nmeros em qualquer base para a base 10 usando o


algoritmo acima.

Exemplos:
a) Converter 4F5H para a base 10 .
Soluo: Lembramos que o H significa que a representao hexadecimal (base 16).
Sabemos ainda que F =15 . Ento: 16 10

4x16 + 15x16 + 5x16 = 4x256 + 15x16 + 5 = 1024 + 240 + 5 = 1269


2 1 0
10

b) Converter 3485 para a base 10. 9

Soluo: 3x9 + 4x9 + 8x9 + 5x9 = 3x729 + 4x81 + 8x9 + 5 = 2187 + 324 + 72 + 5 =
3 2 1 0

2588 .
10

c) Converter 7G para a base 10.


16

Soluo: Uma base b dispe dos algarismos entre 0 e (b-1). Assim, a base 16 dispe dos
algarismos 0 a F e portanto o smbolo G no pertence representao hexadecimal.

d) Converter 1001,01 para a base 10. 2

Soluo: 1x2 + 0x2 + 0x2 + 1x2 + 0x2 + 1x2 = 8 + 0 + 0 + 1 + 0 + 0,25 = 9,25


3 2 1 0 -1 -2
10

e) Converter 34,3 para a base 10. 5

Soluo: 3x5 + 4x5 + 3x5 = 15 + 4 + 0,6 = 19,6


1 0 -1
10

f) Converter 38,3 para a base 10. 8

Soluo: Uma base b dispe dos algarismos entre 0 e (b-1). Assim, a base 8 dispe dos
algarismos 0 a 7 e portanto o algarismo 8 no existe nessa base. A representao 38,3
no existe na base 8.

Converso de Nmeros da Base 10 para uma Base b qualquer


A converso de nmeros da base dez para uma base qualquer emprega algoritmos que
sero o inverso dos acima apresentados. Os algoritmos sero melhor entendidos pelo
exemplo que por uma descrio formal. Vamos a seguir apresentar os algoritmos para a
parte inteira e para a parte fracionria:

Parte Inteira:
O nmero decimal ser dividido sucessivas vezes pela base; o resto de cada diviso
ocupar sucessivamente as posies de ordem 0, 1, 2 e assim por diante at que o resto
da ltima diviso (que resulta em qociente zero) ocupe a posio de mais alta ordem.
Veja o exemplo da converso do nmero 19 para a base 2:
10

Experimente fazer a converso contrria (retornar para a base 10) e ver se o resultado
est correto.

Parte Fracionria
Se o nmero for fracionrio, a converso se far em duas etapas distintas: primeiro a
parte inteira e depois a parte fracionria. Os algoritmos de converso so diferentes. O
algoritmo para a parte fracionria consiste de uma srie de multiplicaes sucessivas do
nmero fracionrio a ser convertido pela base; a parte inteira do resultado da primeira
multiplicao ser o valor da primeira casa fracionria e a parte fracionria ser de novo
multiplicada pela base; e assim por diante, at o resultado dar zero ou at encontrarmos
o nmero de casas decimais desejado. Por exemplo, vamos converter 15,65 para a base 10

2, com 5 e com 10 algarismos fracionrios:

Obs.: Em ambos os casos, a converso foi interrompida quando encontramos o nmero


de algarismos fracionrios solicitadas no enunciado. No entanto, como no encontramos
resultado 0 em nenhuma das multiplicaes, poderamos continuar efetuando
multiplicaes indefinidamente at encontrar (se encontrarmos) resultado zero. No caso
de interrupo por chegarmos ao nmero de dgitos especificado sem encontramos
resultado zero, o resultado encontrado aproximado e essa aproximao ser funo do
nmero de algarismos que calcularmos. Fazendo a converso inversa, encontraremos:

Com 5 algarismos fracionrios:


Parte inteira: 1111 = 15
2 10

Parte fracionria: 0,10100 = 1x2 + 0x2 + 1x2 + 0x2 + 0x2 = 0,5 + 0,125 = 0,625
2
-1 -2 -3 -4 -5
10

Com 10 algarismos fracionrios:


Parte inteira: 1111 = 15
2 10

Parte fracionria: 0,1010011001 = 1x2 + 0x2 + 1x2 + 0x2 + 0x2 + 1x2 + 1x2 + 0x2
2
-1 -2 -3 -4 -5 -6 -7 -8

+ 0x2 + 1x2 = 1/2 + 1/8 + 1/64 + 1/128 + 1/1024 = 0,5 + 0,125 + 0,015625 +
-9 -10

0,0078125 + 0,0009765625 = 0,6494140625 10


Ou seja, podemos verificar (sem nenhuma surpresa) que, quanto maior nmero de
algarismos forem considerados, melhor ser a aproximao.

Converso de Nmeros entre duas Bases quaisquer


Para converter nmeros de uma base b para uma outra base b' quaisquer (isso , que
no sejam os casos particulares anteriormente estudados), o processo prtico utilizado
converter da base b dada para a base 10 e depois da base 10 para a base b' pedida.

Exemplo: Converter 43 para ( ) .


5 9

43 = (4 x 5 + 3) = 23 ==> 23/9 = 2 (resto 5) logo 43 = 23 = 25


5 10 10 5 10 9

SISTEMAS DE NUMERAO

Aritmtica em Binrio
A taboada da soma aritmtica em binrio muito simples. So poucas regras:
0+0=0
0+1=1
1+0=1
1 + 1 = 0 (e "vai 1" para o dgito de ordem superior)
1 + 1 + 1 = 1 (e "vai 1" para o dgito de ordem superior)

Exemplo:
Efetuar 011100 + 011010
Obs.: 1) Lembre-se: soma-se as colunas da direita para a esquerda, tal como uma soma
em decimal.
Obs.: 2) No exemplo, so usadas, em seqncia, da direita para a esquerda, todas as
regrinhas acima.
Obs.: 3) Na primeira linha, em azul, indicado o "vai um".
Obs.: 4) Por simplicidade, no exemplo estamos considerando os dois nmeros positivos.

Soluo:
11-----> "vai um"
011100
011010+
----------
110110

Vamos ver agora a taboada da subtrao:


0-0=0
0 - 1 = 1 ("vem um do prximo")
1-0=1
1-1=0

Obs.: Como impossvel tirar 1 de zero, o artifcio "pedir emprestado" 1 da casa de


ordem superior. Ou seja, na realidade o que se faz subtrair 1 de 10 e encontramos 1
como resultado, devendo ento subtrair 1 do dgito de ordem superior (aquele 1 que se
"pediu emprestado"). Vamos lembrar que esse algoritmo exatamente o mesmo da
subtrao em decimal a que j estamos acostumados desde o curso primrio.

Exemplo:
Efetuar 111100 + 011010
Obs.: 1) Lembre-se: subtrai-se as colunas da direita para a esquerda, tal como uma
subtrao em decimal.
Obs.: 2) No exemplo, so usadas, em seqncia, da direita para a esquerda, todas as
regrinhas acima.
Obs.: 3) Na primeira linha, em vermelho, indicado o "vem um".
Obs.: 4) Por simplicidade, no exemplo estamos considerando os dois nmeros positivos.

Soluo:
---02-> "vem um"
11100
01010-
----------
10010

Complemento a Base
A implementao do algoritmo da subtrao em computadores complexa, requerendo
vrios testes. assim, em computadores a subtrao em binrio feita por um artifcio. O
mtodo utilizado o "Mtodo do Complemento a Base" que consiste em encontrar o
complemento do nmero em relao base e depois somar os nmeros. Os
computadores funcionam sempre na base 2, portanto o complemento base ser
complemento a dois. Computadores encontram o complemento a dois de um nmero
atravs de um algoritmo que pode ser assim descrito:

- se o nmero positivo, mantenha o nmero (o complemento de um nmero


positivo o prprio nmero)
-se o nmero negativo:
---inverta o nmero negativo ou o subtraendo na subtrao (todo 1 vira zero, todo
zero vira um)
--- some 1 ao nmero em complemento
--- some as parcelas (na subtrao, some o minuendo ao subtraendo)
--- se a soma em complemento acarretar "vai-um" ao resultado, ignore o
transporte final)

Como exemplo, vamos usar o algoritmo acima na subtrao 1101 - 1100 = 0001

mantm o minuendo ---> 1101


inverte o subtraendo ---> 0011
soma minuendo e
---> 10000
subtraendo
soma 1 ---> 10001
ignora o "vai-um" ---> 0001

Este algoritmo ser analisado em detalhes na seo Representao de Nmeros


Negativos em Complemento. Vamos ver agora a taboada da multiplicao:
0x0=0
0x1=0
1x0=0
1x1=1

No entanto, tambm a multiplicao em computadores feita por um artifcio: para


multiplicar um nmero A por n, basta somar A com A, n vezes. Por exemplo, 4 x 3 = 4 +
4 + 4. E a diviso tambm pode ser feita por subtraes sucessivas! O que conclumos?
Que qualquer operao aritmtica pode ser realizada em computadores apenas atravs
de somas (diretas ou em complemento)! Legal, mas para que serve isso? Por enquanto,
ficamos por aqui. No captulo sobre Circuitos Lgicos veremos como essas
propriedades sero teis para os engenheiros que projetam os computadores!

Uns exerccios um pouco diferente, para desenvolver o raciocnio:


a) Durante uma explorao, a arqueloga Lar Acroft encontrou numa escavao uma
pedra gravada com os seguintes caracteres:

%@#%
###&
%&#&%

Concluindo brilhantemente (e com uma boa dose de adivinhao) que os smbolos


correspondiam a uma operao de adio entre dois nmeros positivos e que todos os
algarismos usados pela antiga civilizao esto presentes na gravao, determine a base
de numerao utilizada, o algarismo arbico correspondente a cada smbolo e a
representao das parcelas e do resultado da adio, convertidas para a base 10.

b) O Sr. M. recebeu certo dia um e-mail de seu agente Jaime Bonde, que estava em
misso. O e-mail continha apenas o seguinte texto:

SEND
MORE
MONEY

Concluindo (tambm) brilhantemente (e tambm com uma boa dose de adivinhao)


que os smbolos correspondiam a uma operao de adio entre dois nmeros positivos
representados em decimal (Jaime NO era forte em informtica!), o Sr. M. raciocinou e
ento enviou ao agente uma determinada quantia. Quanto o Sr. M. enviou para seu
agente J. Bonde?

REPRESENTAO DE DADOS
Em um computador so armazenados e processados apenas dados e instrues. Um
programa de computador formado por uma seqncia de instrues que operam
sobre um conjunto de dados (os dados so os operandos das instrues - ver captulo
sobre Representao de Instrues). Um computador executa operaes sobre dados
numricos (os nmeros) ou alfabticos (letras e smbolos). Por outro lado, um
computador somente opera sobre valores representados em notao binria, isto ,
somente "entende" bits - uns e zeros. Assim, os dados precisam ser representados no
computador (na memria e no processador) sempre atravs de bits, de uma forma que o
computador possa interpretar corretamente o seu significado e executar as operaes
adequadas.

Em outras palavras, isso significa que 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).
TIPOS DE DADOS
Um programa (a seqncia de instrues) dever manipular diferentes tipos de dados.

Os dados podem ser:


--numricos
---- ponto fixo (nmeros inteiros)
---- ponto flutuante (nmeros reais ou fracionrios)
---- BCD (representao decimal codificada em binrio)

-- alfabticos
----- letras, nmeros e smbolos (codificados em ASCII e EBCDIC)

O tipo de dado que est sendo fornecido ao programa dever ser informado pelo
programador, atravs de declaraes, fazendo com que o programa interprete o dado
fornecido de acordo com a declarao. Por exemplo, na linguagem C, declaraes tipo

int num; (inteiro) ou


float sal (real);

indicam que a varivel num um nmero inteiro (int) e a varivel sal um nmero real
(float), representao cientfica, isto , representado na forma
[(Sinal) Valor x Base (elevada a Expoente)].

Declaraes tipo char letra; indicam que a varivel um caractere.

DADOS NUMRICOS
A forma mais intuitiva de representar nmeros seria atravs da converso do nmero
decimal para seu correspondente em binrio. Como os computadores operam sempre em
binrio, essa seria a forma mais imediata e eficiente.

Os nmeros podem ser positivos ou negativos. Um aspecto primordial a ser definido


seria ento como representar o sinal. Nesta representao foi definida a utilizao de
mais um bit na representao (o bit mais representativo), representando o sinal, com a
seguinte conveno:

bit 0 ==> sinal positivo


bit 1 ==> sinal negativo.

A seguir, apresentamos exemplos de nmeros e sua representao em binrio:

Valor binrio com 8 bits (7 + bit de


Valor decimal
sinal)
00001001 (bit inicial 0 significa
+9
positivo)
10001001 (bit inicial 1 significa
-9
negativo)
01111111 (bit inicial 0 significa
+127
positivo)
11111111 (bit inicial 1 significa
-127
negativo)
Assim, uma representao em binrio com n bits teria disponveis para a representao
do nmero n-1 bits (o bit mais significativo representa o sinal). Essa representao tem
o nome de representao em sinal e magnitude.

REPRESENTAO DE DADOS
REPRESENTAO DE NMEROS INTEIROS (PONTO FIXO)
Dados numricos ponto fixo so nmeros inteiros, isto , sem parte fracionria.

Os dados NUMRICOS INTEIROS POSITIVOS so sempre representados com o


sinal (convencionado que bit mais significativo 0 = sinal positivo) e em seguida o valor
do dado em binrio.

Porm, devido complexidade dos algoritmos para os computadores operarem com


NMEROS NEGATIVOS quando se usa a representao em sinal e magnitude (acima
sumariamente apresentada), so comumente adotadas outras formas que facilitam e
tornam mais eficiente a manipulao de operaes aritmticas em computadores: as
representaes em complemento.

Vamos analisar cada uma dessas representaes.

REPRESENTAO EM SINAL E MAGNITUDE


A magnitude (isto , o valor absoluto, que independe de sinal) de um nmero
representada em binrio. O sinal representado por um bit (o bit mais significativo, isto
, o bit mais esquerda na representao). Por conveno, o bit de sinal 0 (zero)
significa que o nmero positivo e o bit 1 representa nmero negativo.

O valor dos bits usados para representar a magnitude independe do sinal, isto , sendo o
nmero positivo ou negativo, a representao binria da magnitude ser a mesma, o que
varia apenas o bit de sinal.

Ex.:
0011 = +3
1011 = -3
(011 equivale ao valor absoluto 3)

FAIXA DE REPRESENTAO

A representao na base b em sinal e magnitude com n bits (incluindo o bit de sinal)


possui bn representaes e permite representar bn -1 valores, de vez que h duas
representaes para o zero.

A faixa de representao de uma representao na base 2 em sinal e magnitude com n


bits (incluindo o bit de sinal) possui
2n representaes, representando os valores entre - ( 2n-1-1) e + ( 2n-1-1).
O maior valor inteiro positivo ser ento + ( 2n-1-1) e o menor valor inteiro negativo ser
- ( 2n-1-1).

Obs1.: o nmero de bits para a representao determinado no projeto do computador.


Obs2.: em sinal e magnitude, existem duas representaes para o zero.

ARITMTICA EM SINAL E MAGNITUDE


Algoritmo da soma
a) verificar o sinal das parcelas
b) se os sinais forem iguais:
-- repetir o sinal
-- somar as magnitudes
c) se os sinais forem diferentes
-- verificar qual parcela tem maior magnitude
-- repetir o sinal da maior magnitude
-- subtrair a menor magnitude da maior magnitude

Algoritmo da subtrao
O algoritmo da subtrao o mesmo da soma, sendo feita como se fosse uma soma
de dois nmeros que tem os sinais diferentes.

A representao em sinal e magnitude apresenta uma grande desvantagem: ela exige um


grande nmero de testes para se realizar uma simples soma de dois nmeros inteiros. O
algoritmo acima descrito complicado de ser realizado no computador, o que resulta em
baixa eficincia (execuo lenta). Um outro ponto negativo termos duas
representaes para o zero.

REPRESENTAO DE DADOS

REPRESENTAO DE NMEROS EM COMPLEMENTO


Complemento a diferena entre cada algarismo do nmero e o maior algarismo
possvel na base. Uma vantagem da utilizao da representao em complemento que
a subtrao entre dois nmeros pode ser substituda pela sua soma em complemento.

REPRESENTAO DE NMEROS POSITIVOS EM COMPLEMENTO


A representao de nmeros positivos em complemento no tem qualquer alterao, isto
, idntica representao em sinal e magnitude.

REPRESENTAO DE NMEROS NEGATIVOS EM COMPLEMENTO A


(BASE - 1)
A representao dos nmeros inteiros negativos obtida efetuando-se: (base - 1) menos
cada algarismo do nmero. Fica mais fcil entender atravs de exemplos:

Ex.1: Calcular o complemento a (base - 1) do nmero 29710.


Se a base 10, ento 10-1 = 9 e o complemento a (base -1) ser igual a complemento a
9
Ex.2: Calcular o complemento a (base - 1) do nmero 3A7EH.
Se a base 16, ento 10H-1 = F e o complemento a (base -1) ser igual a complemento
a F.

Portanto:

Ex.1 Ex.2
(base -1) ---> 999 FFFF
- 297 - 3A7E
Complemento
702 C581
--->

Caso Particular: Nmeros na Base 2 (Complemento a 1)


Para se obter o complemento a 1 de um nmero binrio, devemos subtrair cada
algarismo de 1. Uma particularidade dos nmeros binrios que, para efetuar esta
operao, basta inverter todos os bits.

Como exemplo, vamos calcular o complemento a 1 (C1) de um nmero binrio 0011


com 4 dgitos.

1111
- 0011
1100 (C1)

Portanto, bastaria inverter todos os bits!


Vamos analisar como ficaria a representao em C1 dos nmeros binrios de 4 dgitos:

Binrio (se o
Decimal nmero Decimal Binrio (em
(positivo) positivo, no h (negativo) C1)
alterao)
0 0000 0 1111
1 0001 -1 1110
2 0010 -2 1101
3 0011 -3 1100
4 0100 -4 1011
5 0101 -5 1010
6 0110 -6 1001
7 0111 -7 1000

FAIXA DE REPRESENTAO
A representao na base b em complemento a (base-1) com n bits possui bn
representaes e permite representar bn -1 valores. H duas representaes para o zero.

A faixa de representao de uma representao na base 2 em complemento a (base-1)


com n bits a mesma que em sinal e magnitude e pode ser calculada como
2n valores, entre - ( 2n-1-1) e + ( 2n-1-1)
O maior valor inteiro positivo ser ento + ( 2n-1-1) e o menor valor inteiro negativo ser
- ( 2n-1-1).

Obs1.: o nmero de bits para a representao determinado no projeto do computador.


Obs2.: em C1 tambm existem duas representaes para o zero.

Vamos verificar qual a faixa de representao nos seguintes exemplos:

Base 10 com 3 dgitos: a representao varia de 000 a 999 (103 representaes),


representando os nmeros de -499 a -1 (faixa negativa), de +1 a +499 (faixa positiva).

Faixa Inferior Faixa Superior


Base 10
(positiva) (negativa)
C1 1 2.... 498 499 500 501 ..... 997 998
Nmero
1 2 .... 498 499 -499 -498 ..... -2 -1
representado

O zero pode ser representado tanto por 000 quanto por 999.

Base 16 com 4 dgitos: a representao varia de 0000 a FFFF, representando os nmeros


de -7FFF a -0001 (faixa negativa) e de +0001 a +7FFF (faixa positiva).

Faixa Inferior Faixa Superior


Base 16
(positiva) (negativa)
C1 0001 0002 ... 7FFF 8000 8001 ....FFFE
Nmero -7FFF -7FFE ......
0001 0002 ... 7FFF
representado -0001

O zero pode ser representado tanto por 0000 quanto por FFFF.

Obs: Podemos concluir que, tal como na representao em sinal e magnitude,


sempre que em uma representao em complemento o primeiro dgito binrio for
1, o nmero representado negativo! Mas importante notar que o bit mais
significativo, na representao em complemento, ao contrrio do que ocorre na
representao em sinal e magnitude, NO REPRESENTA O SINAL DE
NEGATIVO!

ARITMTICA EM COMPLEMENTO A (BASE - 1)


Na aritmtica em complemento a (base-1), basta somar os nmeros, sendo que um
nmero negativo estar representado por seu complemento. Ex.: Somar + 123 com - 418
(decimal).

Sinal e Complemento a (base-1) Verificao


magnitude
- 418 581 (C9) 999
+ 123 + 123 - 295
- 295 704 704

Verificamos que o resultado 704 (C9) um nmero negativo, isto , o complemento a 9


(base 10 -1) de 295.

Repare que a subtrao (ou soma de um nmero positivo com um nmero negativo) se
transforma, nesta representao, em uma soma em complemento, isto , a soma dos
complementos do nmero positivo com o nmero negativo! Portanto, numa subtrao
(realizada atravs de soma em complemento), se o nmero positivo, mantenha-o; se o
nmero negativo, complemente-o; e a, s somar! Dessa forma, podemos constatar
que o algoritmo da soma em complemento muito mais simples que o da soma em sinal
e magnitude, de vez que no requer nenhum teste. No entanto, continuamos com duas
representaes para o zero. Vamos a seguir discutir a soluo para esse problema.

REPRESENTAO DE NMEROS NEGATIVOS EM


COMPLEMENTO A BASE
A representao dos nmeros inteiros negativos em complemento a base obtida
subtraindo-se da base cada algarismo do nmero. Ora, seria a mesma coisa subtrair cada
algarismo de (base-1), isto , calcular o complemento a (base -1) e depois somar 1 ao
resultado, ou seja:

b - N = [(b-1) - N] + 1.

Ou seja, encontramos o complemento a (base-1) do nmero (o que facilita muito no


caso dos nmeros binrios) e depois somamos 1 ao resultado. Fica mais fcil entender
atravs de exemplos:

Ex.1: Calcular o complemento a base do nmero 29710.


Se a base 10, o complemento a base ser igual a complemento a 10.

Ex.2: Calcular o complemento a base do nmero 3A7Eh.


Se a base 16 (lembremos mais uma vez que o H ou h depois do nmero simboliza
"hexadecimal"), o complemento a base ser igual a complemento a 1610 ou 10h.

Portanto, calculando o complemento a base dos nmeros acima, temos:

Ex.1
Ex.1 Ex.2
(alternativa)
1000 999 FFFF
- 297 - 297 - 3A7E
702 702 C581
+ 001 + 0001
703 C582

Caso Particular: Nmeros na Base 2 (Complemento a 2)


Para se obter o complemento a 2 de um nmero binrio, a regra geral nos diz para
subtrair cada algarismo de 2. Ora, seria a mesma coisa subtrair cada algarismo de 1
(complemento a 1) e depois somar 1 ao resultado, ou seja: (2-N) = (1-N) + 1. Assim,
tirando partido da particularidade dos nmeros binrios anteriormente apresentada (para
obter o C1 de um nmero binrio, basta inverter todos os bits), para obter o C2 de um
nmero obtemos primeiro o C1 (invertendo os bits) e depois somamos 1 ao resultado.

Como exemplo, vamos calcular o complemento a 2 (C2) de um nmero binrio 0011


com 4 dgitos.

1111
- 0011
1100 (C1)
+ 0001
1101 (C2)

Vamos analisar como ficaria a representao em C2 dos nmeros binrios de 4 dgitos:

Binrio (se o
Decimal nmero Decimal
Binrio (C2)
(positivo) positivo, no h (negativo)
alterao)
0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
3 0011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000

Vemos assim que em C2, no h duas representaes para o valor 0 e


conseqentemente abriu-se lugar para mais uma representao - no caso, mais um
nmero negativo pode ser representado.

FAIXA DE REPRESENTAO
A representao na base b em complemento a base com n bits possui bn representaes e
permite representar bn valores.

A faixa de representao de uma representao na base 2 em complemento a base com


n bits pode ser calculada como

2n valores (entre - 2n-1 e + 2n-1-1), sendo 2 a base.


O maior valor inteiro positivo ser ento + ( 2n-1-1) e o menor valor inteiro negativo ser
- ( 2n-1).
Obs1.: o nmero de bits para a representao determinado no projeto do computador.
Obs2.: nesta representao somente existe uma representao para o zero e h mais
um nmero negativo representado!

Nos exemplos acima, vamos verificar qual a faixa de representao:

Base 10 com 3 dgitos: de 0 a 999 (103 valores), representando de -500 a -1 (faixa


negativa) e de 1 a +499 (faixa positiva). O zero tem apenas uma representao: 000.

Faixa Inferior Faixa Superior


Base 10
(positiva) (negativa)
C2 1 2 .... 499 500 501 ..... 999
Nmero
1 2 .... 499 -500 -499 ... -1
representado

Base 16 com 4 dgitos: de 0 a FFFF, representando -8000 a -1 (faixa negativa) e de 0 a


+7FFF (faixa positiva). O zero tem apenas uma representao: 0000.

Faixa Inferior Faixa Superior


Base 16
(positiva) (negativa)
C2 0001 0002 ... 7FFF 8000 F001 ...... FFFF
Nmero
0001 0002 ... 7FFF -8000 -7FFF... -0001
representado

Obs: Podemos concluir que, tal como na representao em sinal e magnitude e em


complemento a (base-1), sempre que em uma representao em complemento a
base o primeiro dgito binrio for 1, o nmero representado negativo! Mas
importante notar que o bit mais significativo, na representao em complemento,
ao contrrio do que ocorre na representao em sinal e magnitude, NO
REPRESENTA O SINAL DE NEGATIVO!

ARITMTICA EM COMPLEMENTO A BASE


Na aritmtica em complemento a base, basta somar os nmeros, sendo que um nmero
negativo estar representado por seu complemento a base. Ex.: Somar +123 com -418
(decimal).

Sinal e
Clculo C2 C2 Verificao
magnitude
- 418 999 582 999
+ 123 - 418 + 123 - 295
- 295 581 (C1) 705 (C2) 704
+ 001 + 001
582 (C2) 705

Verificamos que o resultado 705 (C2) um nmero negativo, isto , o complemento a


10 (base 10) de 295.

Repare que a subtrao (ou soma de um nmero positivo com um nmero negativo) se
transforma em uma soma em complemento, isto , a soma dos complementos do
nmero positivo com o nmero negativo! Portanto, se o nmero postivo, mantenha-o;
se o nmero negativo, complemente-o; e a, s somar! Dessa forma, podemos
constatar que o algoritmo da soma em complemento muito mais simples que o da
soma em sinal e magnitude, de vez que no requer nenhum teste.

REPRESENTAO DE DADOS
ARITMTICA BINRIA E EM COMPLEMENTO
Nesta seo, vamos rever os conceitos j apresentados sobre aritmtica binria e em
complemento e resolver alguns exerccios para exemplo. Inicialmente, vamos
considerar apenas nmeros positivos (o sinal no ser representado).
Exemplo de Operaes de Adio
BASE 2 BASE 8 BASE 8 BASE 16 BASE 16
111 11 _11 111 111
0111 0762 7142 A679 6FACB
+ 0101 + 0365 + 0576 + 49FB + 4ED93
1100 1347 7740 F074 BE85E
Exemplo de Operaes de Subtrao
BASE 2 BASE 8 BASE 8 BASE 16 BASE 16
111 0762 7142 A679 6FACB
- 101 - 0365 - 0576 - 49FB - 4ED93
010 0375 6344 5C7E 20D38
Exerccio:
Suponha um sistema posicional de numerao na base 6. Determine os valores de R, S,
T, V, X e Z.
RVTZR
+ SRSVZ
T FXVZS
Inicialmente, devemos considerar que cada uma das letras representa um algarismo, sem
qualquer valor pr-determinado.
a) T = 1, porque: T s pode ser 1; a soma de dois algarismos, em qualquer base b, ser
no mximo igual a (2b) -1 e portanto o "vai-um" nunca ser "vai dois"!.
b) V = 0, porque: como Z + V = Z, concluimos que V = 0 e a soma R + Z = S (no vai-
um).
c) S = 5, porque T + S = 0 o que significa que T + S = 6 (porque no pode ser 0, logo 0
+ base = 6 e vai um para a prxima casa) e como T = 1, temos portanto S = 5.
d) Assim, R + V = X, como V = 0 e veio 1 da casa anterior, temos que X = 1 + R
Substituindo, temos que R + S = Z + 6 logo
R-Z=1
R + Z= 5; somando as expresses, temos 2R = 6 ou
R = 3 logo
Z=2e
X=4
ARITMTICA EM COMPLEMENTO - SOMA EM COMPLEMENTO A UM
O algoritmo da soma em complemento a um :
a) Somar os dois nmeros, bit a bit, inclusive o bit de sinal.
b) Avaliao dos casos de "vai-um":
b.1) Se no ocorreu vai-um para o bit de sinal nem para fora do nmero:
--- este o resultado correto;
b.2) Se ocorrer "vai-um" s para o bit de sinal (e no para fora do nmero):
--- incorreto - ocorreu overflow
------- (isto significa que o resultado excede a faixa de representao para o nmero de
bits adotado).
b.3.1) Se ocorrer "vai-um" para fora do nmero:
--- para obter o resultado final, soma-se o "vai-um" externo (para fora do nmero) ao
resultado da soma; o bit para fora do nmero (que excede o nmero de bits adotado na
representao) desprezado.
b.3.2) Nesta soma final tambm pode ocorrer "vai-um" no ltimo bit;
--- se o nmero de "vai-um" ocorridos (para o bit de sinal, para fora do nmero ou na
soma final) for par (o que equivale a inverter duas vezes o sinal),
------ o resultado est correto;
--- se o nmero for mpar (1 ou 3 "vai-um"):
------ o resultado est incorreto - ocorreu overflow.

Exemplos (referidos aos casos acima), considerando representao com 6 bits:


caso b.1: caso b.2: caso b.3: caso b.3:
15 +10 = 2510 15 + 22 = 3710 -15 -10 = -2510 -15 -22 = -3710
_111 1111 11 1
001111 (+) 001111 (+) 110000 (-) 110000 (-)
+ 001010 (+) + 010110 (+) + 110101 (-) + 101001 (-)
011001 (+) 100101 (-) 100101 011001
+ ______1 + ______1
100110 (-) 011010 (+)
CORRETO OVERFLOW CORRETO OVERFLOW
(ocorreu "vai-
(ocorreu "vai-
um" p/ bit de
um" s p/ fora
(s ocorreu sinal e p/ fora
(no ocorreu do n mas no
"vai-um" para do n mas no
"vai-um") na soma final -
o bit de sinal) na soma final -
n de "vai-um"
n de "vai-um"
mpar)
par)
obs.: soma de obs.: soma de
dois n dois n
positivos no negativos no
poderia dar poderia dar
negativo positivo
A faixa de repreentao com 6 bits em C1 vai de -31 a +31. Conferindo as contas pela
representao decimal, vemos que os resultados fora desta faixa excedem a faixa da
representao e no podem ser representados com 6 bits (portanto, com este nmero de
bits, ocorre overflow).

Existe um teste prtico que, quando ambos os nmeros tem o mesmo sinal, pode
mostrar se ocorreu overflow e o resultado obtido est incorreto: basta ver que na soma
de dois nmeros negativos, o resultado s pode ser negativo, e a soma de dois nmeros
positivos s poderia dar resultado positivo!
ARITMTICA EM COMPLEMENTO - SOMA EM COMPLEMENTO A DOIS
O algoritmo da soma (ou subtrao) em complemento a dois :
a) Somar os dois nmeros, bit a bit, inclusive o bit de sinal.
b) Despreza-se o bit para fora do nmero, se houver.
c.1) Se no ocorreu vai-um para o bit de sinal nem para fora do nmero ou
c.2) Se ocorrer "vai-um" tanto para o bit de sinal quanto para fora do nmero (equivale
a inverter duas vezes o sinal):
--- o resultado est correto;
d.1) Se ocorrer "vai-um" s para o bit de sinal (e no para fora do nmero):
d.2) Se no ocorrer "vai-um" para o bit de sinal e somente ocorrer para fora do nmero:
--- o resultado incorreto - ocorreu overflow
------- (isto significa que o resultado excede a faixa de representao para o nmero de
bits adotado).
Nota: Podemos constatar que o algoritmo de soma em C2 bem mais simples que o de
soma em C1.

Exemplos (referidos aos casos acima), considerando representao com 6 bits:


caso c.1: caso d.1: caso c.2: caso c.2: caso d.2:
15+10 = 15 + 17 = -15 -10 = -15 -17 = -15 -27 =
2510 3210 -2510 -3210 -4210
_111 11111 1 1 11111 1 ____1
001111 (+) 001111 (+) 110001 (-) 110001 (-) 110001 (-)
+ 001010 (+) + 010001 (+) + 110110 (-) + 101111 (-) + 100101 (-)
011001 (+) 100000 (-) 100111 (-) 100000 (-) 010110 (+)
CORRETO OVERFLOW CORRETO CORRETO OVERFLOW
(ocorreu (ocorreu
"vai-um" p/ "vai-um" p/ (s ocorreu
(s ocorreu
(no bit de sinal bit de sinal "vai-um" p/
"vai-um"
ocorreu e p/ fora do e p/ fora do fora do n - o
para o bit de
"vai-um") n - o n de n - o n de n de "vai-
sinal)
"vai-um" "vai-um" um" mpar)
par) par)
obs.: soma
de n
obs.: soma (despreza- (despreza-
negativos
de n se o "vai- se o "vai-
no poderia
positivos no um" para um" para
dar positivo
poderia dar fora do fora do
(despreza
negativo nmero) nmero)
"vai-um" p/
fora do n)
A faixa de repreentao com 6 bits em C2 vai de -32 a +31. Conferindo as contas pela
representao decimal, vemos que os resultados fora desta faixa esto necessariamente
incorretos (ocorreu overflow)

Pode-se aplicar o mesmo teste prtico que, quando ambos os nmeros tem o mesmo
sinal, pode mostrar se ocorreu overflow e o resultado obtido est incorreto: basta ver que
na soma de dois nmeros negativos, o resultado s pode ser negativo, e a soma de dois
nmeros positivos s poderia dar resultado positivo!
ARITMTICA EM SINAL E MAGNITUDE
Em sinal e magnitude, o algoritmo da soma :
a) Se os nmeros forem de mesmo sinal, basta somar os dois nmeros e manter o sinal;
b) Se os nmeros forem de sinais diferentes, subtrai-se o menor nmero do maior; o
sinal ser o do maior nmero.
c) Tem-se overflow sempre que ocorrer "vai-um" da magnitude para o bit de sinal (o
nmero de bits da magnitude foi excedido).
__1 11
0010 1001 0110 (positivo e 1110 (negativo e 1110
(positivo) (negativo) maior) maior) (negativo)
0101 1101 1010 (negativo 0100 (positivo e 1101
+ + + + +
(positivo) (negativo) e menor) menor) (negativo)
0111 1110 0100 1010 1011
CORRETO CORRETO CORRETO CORRETO OVERFLOW
sinais contrrios
ambos
ambos ambos sinais contrrios
negativos ->
positivos -> negativos -> subtrai -> subtrai
soma
soma e -> soma e maior maior magnitude
"vai-um"
mantm o mantm o magnitude negativo ->
para bit de
sinal sinal positivo -> resultado
sinal ->
positivo negativo resultado negativo
overflow
positivo

REPRESENTAO DE DADOS
REPRESENTAO DE NMEROS REAIS
At agora, passamos por cima de alguns outros problemas. Os dados numricos podem
ser fracionrios (tais como 57,683). Como representar essa parte fracionria (aps a
vrgula que a separa da parte inteira), de forma que permita processamento eficiente e
armazenamento com pouco consumo de memria? Vamos analisar esses problemas logo
frente.

NMEROS REAIS
Nmeros reais so aqueles com parte fracionria (por exemplo, 57,683). Estamos
acostumados a representar esses nmeros no formato parte inteira, vrgula (ou ponto),
parte fracionria:

Esta representao, embora cmoda para clculos no papel, no adequada para


processamento no computador.

REPRESENTAO EM PONTO FLUTUANTE


Consideremos o nmero 57,683 usado acima como exemplo. Este nmero pode ser
tambm expresso como 57,683 x 10 . E tambm poderia ser expresso com 57683 x 10
0 -3

ou ainda 0,57683 x 10 . Na realidade, qualquer nmero - inteiro ou fracionrio - pode


2

ser expresso neste formato nmero x base , em que variamos duas coisas: a posio
expoente

da vrgula (que delimita a parte fracionria) e a potncia qual elevamos a base. Essa
representao denominada representao em ponto flutuante, pois o ponto varia sua
posio, modificando, em conseqncia, o valor representado.

REPRESENTAO NORMALIZADA
Na representao normalizada, o nmero preparado movendo a vrgula para a direita
ou para a esquerda de forma que o nmero seja menor que 1, o mais prximo possvel
de 1, obviamente multiplicado por uma potncia da base de forma a manter o valor do
nmero. Em geral, isso significa que o primeiro dgito significativo seguir
imediatamente ao ponto (ou vrgula).
Por exemplo:
57,683 --> normalizando ==> 0,57683 x 10
10
2

0,0004628 --> normalizando ==> 0,4628 x 10


10
-3

0,00001011 --> normalizando ==> 0,1011 x 2


2
-4
De forma genrica, podemos representar a forma normalizada:
nmero x base expoente

A parte do nmero representado dessa forma normalizada (os algarismos


significativos), damos o nome de mantissa.e portanto podemos representar:
0,M x B e

onde M a mantissa, B a base e e o expoente.

REPRESENTAO DE NMEROS REAIS NO COMPUTADOR


Uma forma comum de representao de nmeros reais no computador pode ser expressa
como segue:

Pode-se notar que a base no expressa. Como a base, para cada computador, ser
sempre a mesma, no h necessidade de apresentar a base na representao (no
exemplo, a base 2). Dizemos que a base implcita.
Para cada computador, o nmero total M de bits para a representao, o nmero de bits
para SN (sinal do nmero), para SE (sinal do expoente), para a mantissa e para o
expoente, so pr-definidos em projeto.
Assim, podemos concluir que, quanto maior o nmero de bits para o expoente, maior
ser a faixa de nmeros que o computador pode representar (maior alcance); e quanto
maior o nmero de bits para a mantissa, maior a preciso da representao. Porm,
reduzindo-se a mantissa, perde-se preciso e h maior a necessidade de truncar o
nmero (truncar um nmero cortar algarismos significativos que no podem ser
representados).

Considerando-se a representao acima, na base implcita 2:


maior expoente possvel E: 2 - 1x

maior mantissa possvel: 2 - 1


y

maior nmero real: +(0.111...1 x 2 ) sendo E = 2 - 1


E x

menor nmero real: -(0.111...1 x 2 ) sendo E = 2 - 1


E x

menor real positivo: +(0.100...0 x 2 sendo E = 2 - 1


-E x

maior real negativo: -(0.100...0 x 2 sendo E = 2 - 1


-E x

FAIXA DE REPRESENTAO

Como vimos anteriormente, 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 da mantissa.
Ocorre overflow 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.

Um outro problema ocorre na regio de nmeros prximos de zero, que tem o maior
expoente negativo possvel. Ocorre underflow quando o valor absoluto do dado a ser
representado to pequeno que fica menor que o menor valor absoluto representvel.
Nesse caso, o expoente negativo mas no representa os nmeros muito prximos de
zero e ocorre uma descontinuidade na representao, com os nmeros prximos a zero
no sendo representados.
Underflow no o mesmo que impreciso. Dados na faixa de underflow no podem ser
representados, ocorrendo estouro no expoente. No caso de impreciso, a normalizao
permite que o dado seja representado, porm com perda de preciso.

CARACTERSTICA
Caracterstica o expoente, representado na forma de excesso de n, ou seja,
CARACTERSTICA = EXPOENTE + EXCESSO
A representao substituindo expoente por caracterstica acarreta que todas as
caractersticas sero positivas, de forma que possvel eliminar a representao do sinal
do expoente.

Se CARACTERSTICA = EXPOENTE + EXCESSO,


sendo M o nmero de bits para a representao da caracterstica, temos:

0 = - 2 + EXCESSO logo: EXCESSO = + 2


M-1 M-1

EXEMPLO DE REPRESENTAO EM PONTO FLUTUANTE


a) Representao no IBM /370
A famlia IBM /370 representa os dados em ponto flutuante com base implcita = 16, no
seguinte formato:

sendo
SN = sinal do dado
CARACTERSTICA = o expoente, representado na forma de excesso de n, ou seja,
CARACTERSTICA = EXPOENTE + EXCESSO
No caso da IBM, o excesso de 64 , portanto: CARACTERSTICA = EXPOENTE +
10

6410
Exemplificando: expoente = 8 , logo caracterstica = 8 + 64 = 72
10 10 10 10

Assim, uma caracterstica entre 0 e 63 significa que o expoente negativo, enquanto


10

uma caracterstica entre 65 e 127 significa que o expoente positivo (caracterstica


igual a 64 significa expoente igual a 0)..
10

Exemplo: Representar 25,5 10

Como a base implcita 16, vamos converter para hexadecimal: 25 / 16 = 1, resto 9


logo: 25 = 19
10 16

Parte fracionria: 0.5 x 16 = 8,0


Logo: 25,5 = 19,8 x 16
10 16
0

Normalizando: 19,8 x 16 = 0,198 x 16 . Em binrio com 24 bits, a mantissa


16
0
16
2

normalizada ser:
0,198 = 0001.1001.1000.0000.0000.0000
16

Obs.: Como o nmero 0,198 ser representado em 24 bits, os bits no representativos


16

( direita) sero preenchidos com zeros.


Como o expoente 2, a caracterstica ser: 2 + 64 = 66 . Em binrio com 7 bits, ser:
10 10 10

100.0010
Portanto, a representao ser:

b) Representao no PDP 11
Os microcomputadores PDP 11 representam os dados em ponto flutuante com base
implcita = 2, no seguinte formato:

sendo
SN = sinal do dado
CARACTERSTICA = o expoente, representado na forma de excesso de n, ou seja,
CARACTERSTICA = EXPOENTE + EXCESSO
No caso do PDP 11, o excesso de 128 , portanto: CARACTERSTICA = EXPOENTE
10

+ 12810

Exemplificando: expoente = - 28 logo caracterstica = - 28 + 128 = 100 10 10 10

Assim, uma caracterstica entre 0 e 127 significa que o expoente negativo, enquanto
10

uma caracterstica entre 129 e 255 significa que o expoente positivo (caracterstica
igual a 128 significa expoente igual a 0).
0

Exemplo: Representar 25,5 10

Como a base implcita 2, vamos converter para binrio: 25 = 11001 10 2


Parte fracionria: 0.5 x 2 = 1,0
Logo: 25,5 = 11001,1 x 2
10 2
0

Normalizando: 11001,1 x 2 = 0,110011 x 2 .


2
0
2
5

Obs.: Como a base implcita no PDP 11 2, o nmero normalizado comear SEMPRE


por 0,1. Assim, como o primeiro dgito da mantissa ser sempre 1, o PDP 11 economiza
um bit na mantissa no armazenando o primeiro bit da mantissa, j que est
implcito que todos os nmeros tero mantissa iniciando com 1. O bit economizado
dessa forma permite que, embora a mantissa no PDP seja representada com 23 bits e no
IBM /370 com 24 bits, a preciso na representao a mesma.
Obs.1: Leia-se o SEMPRE da obs. acima como quase sempre. A nica exceo corre
por conta do zero, que nesse caso tem um tratamento especial.
Em binrio com 23 bits, a mantissa normalizada ser (lembrando que o primeiro bit 1
no representado):
0,110011 = 100.1100.0000.0000.0000.0000
2

Obs.: Como o nmero 0,110011 ser representado em 23 bits, os bits no


2

representativos ( direita) sero preenchidos com zeros.


Como o expoente 5, a caracterstica ser: 5 + 128 = 133 . Em binrio com 8 bits,
10 10 10

ser: 1000.0101
Portanto, a representao ser:

Exerccio: Qual das representaes de ponto flutuante nos dois computadores


exemplificados acima tem o maior alcance?
Resp.: O alcance de uma representao depende do valor da base implcita, elevado ao
maior valor que a caracterstica pode assumir.
O maior alcance ser o que tiver o maior valor de B ou seja, base elevada ao maior
e

valor possvel da caracterstica.


O IBM /370 tem 7 bits para caracterstica (maior caracterstica = 63) e base implcita
16, portanto 16 = (2 ) = 2
63 4 63 252

O PDP tem 8 bits para caracterstica (maior caracterstica = 127) e base implcita 2,
portanto 2 127

Concluso: A representao em ponto flutuante do IBM /370 tem maior alcance que a
do PDP 11.

Você também pode gostar