Escolar Documentos
Profissional Documentos
Cultura Documentos
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
A representao 125,38 (base 10) significa 1x10 + 2x10 + 5x10 + 3x10 + 8x10 :
10
2 1 0 -1 -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
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
dez), etc.
Uma curiosidade: o nmero "10 " vale sempre igual base, porque em uma dada base b
b
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!):
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".
SISTEMAS DE NUMERAO
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:
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
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
= 1765 (convertendo cada grupo de tres bits para seu valor equivalente em octal).
8
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
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
Soluo: 3x9 + 4x9 + 8x9 + 5x9 = 3x729 + 4x81 + 8x9 + 5 = 2187 + 324 + 72 + 5 =
3 2 1 0
2588 .
10
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.
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.
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
Parte fracionria: 0,10100 = 1x2 + 0x2 + 1x2 + 0x2 + 0x2 = 0,5 + 0,125 = 0,625
2
-1 -2 -3 -4 -5
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
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
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:
Como exemplo, vamos usar o algoritmo acima na subtrao 1101 - 1100 = 0001
%@#%
###&
%&#&%
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
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.
-- 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
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)].
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.
REPRESENTAO DE DADOS
REPRESENTAO DE NMEROS INTEIROS (PONTO FIXO)
Dados numricos ponto fixo so nmeros inteiros, isto , sem parte fracionria.
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
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.
REPRESENTAO DE DADOS
Portanto:
Ex.1 Ex.2
(base -1) ---> 999 FFFF
- 297 - 3A7E
Complemento
702 C581
--->
1111
- 0011
1100 (C1)
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.
O zero pode ser representado tanto por 000 quanto por 999.
O zero pode ser representado tanto por 0000 quanto por FFFF.
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.
b - N = [(b-1) - N] + 1.
Ex.1
Ex.1 Ex.2
(alternativa)
1000 999 FFFF
- 297 - 297 - 3A7E
702 702 C581
+ 001 + 0001
703 C582
1111
- 0011
1100 (C1)
+ 0001
1101 (C2)
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
FAIXA DE REPRESENTAO
A representao na base b em complemento a base com n bits possui bn representaes e
permite representar bn valores.
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
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.
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.
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:
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
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).
FAIXA DE REPRESENTAO
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.
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
normalizada ser:
0,198 = 0001.1001.1000.0000.0000.0000
16
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
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
ser: 1000.0101
Portanto, a representao ser:
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.