Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

REPRESENTAÇÃO DE DADOS 
1 REPRESENTAÇÃO DE NÚMEROS INTEIROS (PONTO FIXO) 
1.1 Tipos de Dados 
1.2 Dados Numéricos 
 
2 REPRESENTAÇÃO EM SINAL E MAGNITUDE 
2.1 Faixa de Representação 
2.2 Aritmética em Sinal e Magnitude 
3 REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A (BASE - 
1) 
3.1 Representação em Complemento a (Base - 1) 
3.2 Faixa de Representação 
3.3 Aritmética em Complemento a (Base - 1) 
3.4 Representação em Complemento a Base 
3.5 Faixa de Representação 
3.6 Aritmética em Complemento a Base 
4 ARITMÉTICA BINÁRIA E EM COMPLEMENTO 
4.1 Aritmética em Complemento - Soma em Complemento a 1 
4.2 Aritmética em Complemento - Soma em Complemento a 2 
4.3 Aritmética em Sinal e Magnitude
5 REPRESENTAÇÃO DE NÚMEROS REAIS 
5.1 Dados Numéricos Fracionários (Ponto Flutuante)
6 ARITMÉTICA EM PONTO FLUTUANTE 
6.1 Algoritmos da Soma, Subtração, Multiplicação e Divisão em Ponto Flutuante
7 REPRESENTAÇÃO DE CARACTERES E SÍMBOLOS 
7.1 Códigos de representação de Letras e outros Símbolos 
7. 2 Código ASCII 
8 REPRESENTAÇÃO DE NÚMEROS DECIMAIS CODIFICADOS EM BINÁRIO 
8.1 Representação BCD
 
 
 
 
 
 
 
1 REPRESENTAÇÃO DE NÚMEROS INTEIROS (PONTO FIXO) 
 
Em um computador são armazenados e processados apenas dados e instruções. Um programa de computador é 
formado por uma seqüência de instruções que operam sobre um conjunto de dados (os dados são os 
operandos das instruções - ver capítulo sobre Representação de Instruções). Um computador executa operações 
sobre dados numéricos (os números) ou alfabéticos (letras e símbolos). Por outro lado, um computador somente 
opera sobre valores representados em notação binária, isto é, somente "entende" bits - uns e zeros. Assim, os 
dados precisam ser representados no computador (na memória e no processador) sempre através de bits, de uma 
forma que o computador possa interpretar corretamente o seu significado e executar as operações 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 memória). 
1.1 TIPOS DE DADOS 
Um programa (a seqüência de instruções) deverá manipular diferentes tipos de dados. 
Os dados podem ser: 
--numéricos 
---- ponto fixo (números inteiros) 
---- ponto flutuante (números reais ou fracionários) 
---- BCD (representação decimal codificada em binário) 
-- alfabéticos 
----- letras, números e símbolos (codificados em ASCII e EBCDIC) 
O tipo de dado que está sendo fornecido ao programa deverá ser informado pelo programador, através de 
declarações, fazendo com que o programa interprete o dado fornecido de acordo com a declaração. Por 
exemplo, na linguagem C, declarações tipo 
int num; (inteiro) ou 
float sal (real); 
indicam que a variável num é um número inteiro (int) e a variável sal é um número real (float), representação 
científica, isto é, representado na forma 
[(Sinal) Valor x Base (elevada a Expoente)]. 
Declarações tipo char letra; indicam que a variável é um caractere. 
1.2 DADOS NUMÉRICOS 
A forma mais intuitiva de representar números seria através da conversão do número decimal para seu 
correspondente em binário. Como os computadores operam sempre em binário, essa seria a forma mais 
imediata e eficiente. 
Os números podem ser positivos ou negativos. Um aspecto primordial a ser definido seria então como 
representar o sinal. Nesta representação foi definida a utilização de mais um bit na representação (o bit mais 
representativo), representando o sinal, com a seguinte convenção: 
bit 0 ==> sinal positivo 
bit 1 ==> sinal negativo. 
 
 
 
A seguir, apresentamos exemplos de números e sua representação em binário: 
http://wwwusers.rdc.puc-rio.br/rmano/ri.html
Valor decimal Valor binário com 8 bits (7 + bit de sinal) 
+9 00001001 (bit inicial 0 significa positivo) 
-9 10001001 (bit inicial 1 significa negativo) 
+127 01111111 (bit inicial 0 significa positivo) 
-127 11111111 (bit inicial 1 significa negativo 
Assim, uma representação em binário com n bits teria disponíveis para a representação do número n-1 bits (o 
bit mais significativo representa o sinal). Essa representação tem o nome de representação em sinal e 
magnitude. 
 
2 REPRESENTAÇÃO EM SINAL E MAGNITUDE 
 
A magnitude (isto é, o valor absoluto, que independe de sinal) de um número é representada em binário. O 
sinal é representado por um bit (o bit mais significativo, isto é, o bit mais à esquerda na representação). Por 
convenção, o bit de sinal 0 (zero) significa que o número é positivo e o bit 1 representa número negativo. 
O valor dos bits usados para representar a magnitude independe do sinal, isto é, sendo o número positivo ou 
negativo, a representação binária da magnitude será a mesma, o que varia é apenas o bit de sinal. 
Ex.: 
0011 = +3 
1011 = -3 
(011 equivale ao valor absoluto 3) 
2.1 FAIXA DE REPRESENTAÇÃO 
A representação na base b em sinal e magnitude com n bits (incluindo o bit de sinal) possui bn representações e 
permite representar bn -1 valores, de vez que há duas representações para o zero. 
A faixa de representação de uma representação na base 2 em sinal e magnitude com n bits (incluindo o bit de 
sinal) possui 
2n representações, representando os valores entre - ( 2n-1-1) e + ( 2n-1-1). 
O maior valor inteiro positivo será então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1-1). 
 
Obs1.: o número de bits para a representação é determinado no projeto do computador. 
Obs2.: em sinal e magnitude, existem duas representações para o zero. 
2.2 ARITMÉTICA 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 subtração 
O algoritmo da subtração é o mesmo da soma, sendo feita como se fosse uma soma de dois números que 
tem os sinais diferentes. 
A representação em sinal e magnitude apresenta uma grande desvantagem: ela exige um grande número de 
testes para se realizar uma simples soma de dois números inteiros. O algoritmo acima descrito é complicado de 
ser realizado no computador, o que resulta em baixa eficiência (execução lenta). Um outro ponto negativo é 
termos duas representações para o zero. 
3 REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A (BASE - 1) 
REPRESENTAÇÃO DE NÚMEROS EM COMPLEMENTO 
Complemento é a diferença entre cada algarismo do número e o maior algarismo possível na base. Uma 
vantagem da utilização da representação em complemento é que a subtração entre dois números pode ser 
substituída pela sua soma em complemento. 
REPRESENTAÇÃO DE NÚMEROS POSITIVOS EM COMPLEMENTO 
A representação de números positivos em complemento não tem qualquer alteração, isto é, é idêntica à 
representação em sinal e magnitude. 
3.1 REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A (BASE - 1) 
A representação dos números inteiros negativos é obtida efetuando-se: (base - 1) menos cada algarismo do 
número. Fica mais fácil entender através de exemplos: 
Ex.1: Calcular o complemento a (base - 1) do número 29710. 
Se a base é 10, então 10-1 = 9 e o complemento a (base -1) será igual a complemento a 9 
 
Ex.2: Calcular o complemento a (base - 1) do número 3A7EH. 
Se a base é 16, então 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: Números na Base 2 (Complemento a 1) 
Para se obter o complemento a 1 de um número binário, devemos subtrair cada algarismo de 1. Uma 
particularidade dos números binários é que, para efetuar esta operação, basta inverter todos os bits. 
 
Como exemplo, vamos calcular o complemento a 1 (C1) de um número binário 0011 com 4 dígitos.1111 
-0011
1100 (C1) 
Portanto, bastaria inverter todos os bits! 
Vamos analisar como ficaria a representação em C1 dos números binários de 4 dígitos: 
Decimal 
(positivo) 
Binário (se o número é 
positivo, não há 
alteração) 
Decimal 
(negativo) Binário (em C1) 
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 
 
3.2 FAIXA DE REPRESENTAÇÃO 
A representação na base b em complemento a (base-1) com n bits possui bn representações e permite 
representar bn -1 valores. Há duas representações para o zero. 
A faixa de representação de uma representação 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á então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1-1). 
 
Obs1.: o número de bits para a representação é determinado no projeto do computador. 
Obs2.: em C1 também existem duas representações para o zero. 
Vamos verificar qual a faixa de representação nos seguintes exemplos: 
Base 10 com 3 dígitos: a representação varia de 000 a 999 (103 representações), representando os números de -
499 a -1 (faixa negativa), de +1 a +499 (faixa positiva). 
 
 
 
Base 10 Faixa Inferior 
(positiva) Faixa Superior (negativa)
C1 1 2.... 498 499 500 501 ..... 997 998 
Número 
representado 1 2 .... 498 499 -499 -498 ..... -2 -1 
O zero pode ser representado tanto por 000 quanto por 999. 
Base 16 com 4 dígitos: a representação varia de 0000 a FFFF, representando os números de -7FFF a -0001 
(faixa negativa) e de +0001 a +7FFF (faixa positiva). 
Base 16 Faixa Inferior 
(positiva) 
Faixa Superior 
(negativa) 
C1 0001 0002 ... 7FFF 8000 8001 ....FFFE 
Número 
representado 0001 0002 ... 7FFF -7FFF -7FFE ...... -
0001 
O zero pode ser representado tanto por 0000 quanto por FFFF. 
Obs: Podemos concluir que, tal como na representação em sinal e magnitude, sempre que em uma 
representação em complemento o primeiro dígito binário for 1, o número representado é negativo! Mas é 
importante notar que o bit mais significativo, na representação em complemento, ao contrário do que 
ocorre na representação em sinal e magnitude, NÃO REPRESENTA O SINAL DE NEGATIVO! 
3.3 ARITMÉTICA EM COMPLEMENTO A (BASE - 1) 
Na aritmética em complemento a (base-1), basta somar os números, sendo que um número negativo estará 
representado por seu complemento. Ex.: Somar + 123 com - 418 (decimal). 
 
Sinal e 
magnitude 
Complemento a (base-
1) Verificação 
-418 581 (C9) 999 
+123 +123 -295
-295 704 704 
 
Verificamos que o resultado 704 (C9) é um número negativo, isto é, o complemento a 9 (base 10 -1) de 295. 
Repare que a subtração (ou soma de um número positivo com um número negativo) se transforma, nesta 
representação, em uma soma em complemento, isto é, a soma dos complementos do número positivo com o 
número negativo! Portanto, numa subtração (realizada através de soma em complemento), se o número é 
positivo, mantenha-o; se o número é 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 não requer nenhum teste. No entanto, continuamos com duas representações para o zero. Vamos a 
seguir discutir a solução para esse problema. 
 
3.4 REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A BASE 
 
A representação dos números inteiros negativos em complemento a base é obtida subtraindo-se da base cada 
algarismo do número. 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 número (o que facilita muito no caso dos números binários) 
e depois somamos 1 ao resultado. Fica mais fácil entender através de exemplos: 
Ex.1: Calcular o complemento a base do número 29710. 
Se a base é 10, o complemento a base será igual a complemento a 10. 
 
Ex.2: Calcular o complemento a base do número 3A7Eh. 
Se a base é 16 (lembremos mais uma vez que o H ou h depois do número simboliza "hexadecimal"), o 
complemento a base será igual a complemento a 1610 ou 10h. 
 
Portanto, calculando o complemento a base dos números acima, temos: 
 Ex.1 Ex.1 
(alternativa) Ex.2
 1000 999 FFFF 
- 297 -297 -3A7E
 702 702 C581 
+001 +0001
703 C582 
Caso Particular: Números na Base 2 (Complemento a 2) 
Para se obter o complemento a 2 de um número binário, 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 números binários anteriormente 
apresentada (para obter o C1 de um número binário, basta inverter todos os bits), para obter o C2 de um 
número obtemos primeiro o C1 (invertendo os bits) e depois somamos 1 ao resultado. 
Como exemplo, vamos calcular o complemento a 2 (C2) de um número binário 0011 com 4 dígitos. 
1111 
-0011
1100 (C1) 
+0001
1101 (C2) 
Vamos analisar como ficaria a representação em C2 dos números binários de 4 dígitos: 
Decimal 
(positivo) 
Binário (se o número é 
positivo, não há 
alteração) 
Decimal 
(negativo) Binário (C2) 
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, não há duas representações para o valor 0 e conseqüentemente abriu-se lugar 
para mais uma representação - no caso, mais um número negativo pode ser representado. 
3.5 FAIXA DE REPRESENTAÇÃO 
A representação na base b em complemento a base com n bits possui bn representações e permite representar bn 
valores. 
A faixa de representação de uma representação 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á então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1). 
 
Obs1.: o número de bits para a representação é determinado no projeto do computador. 
Obs2.: nesta representação somente existe uma representação para o zero e há mais um número negativo 
representado!
Nos exemplos acima, vamos verificar qual a faixa de representação: 
Base 10 com 3 dígitos: 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 representação: 000. 
Base 10 Faixa Inferior (positiva) Faixa Superior (negativa) 
C2 1 2 .... 499 500 501 ..... 999 
Número representado 1 2 .... 499 -500 -499 ... -1 
 
 
Base 16 com 4 dígitos: de 0 a FFFF, representando -8000 a -1 (faixa negativa) e de 0 a +7FFF (faixa positiva). 
O zero tem apenas uma representação: 0000. 
 
 
Base 16 Faixa Inferior Faixa Superior 
(positiva) (negativa) 
C2 0001 0002 ... 7FFF 8000 F001 ...... FFFF
Número 
representado 0001 0002 ... 7FFF -8000 -7FFF... -0001 
 
Obs: Podemos concluir que, tal como na representação em sinal e magnitude e em complemento a (base-
1), sempre que em uma representação em complemento a base o primeiro dígito binário for 1, o número 
representado é negativo! Mas é importante notar que o bit mais significativo, na representação em 
complemento, ao contrário do que ocorre na representação em sinal e magnitude, NÃO REPRESENTA 
O SINAL DE NEGATIVO! 
3.6 ARITMÉTICA EM COMPLEMENTO A BASE 
Na aritmética em complemento a base, basta somar os números, sendo que um número negativo estará 
representado por seu complemento a base. Ex.: Somar +123 com -418 (decimal). 
 
Sinal e 
magnitude Cálculo C2 C2 Verificação 
-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 número negativo, isto é, o complemento a 10 (base 10) de 295. 
Repare que a subtração (ou somade um número positivo com um número negativo) se transforma em uma 
soma em complemento, isto é, a soma dos complementos do número positivo com o número negativo! 
Portanto, se o número é postivo, mantenha-o; se o número é 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 não requer nenhum teste. 
 4 ARITMÉTICA BINÁRIA E EM COMPLEMENTO 
Nesta seção, vamos rever os conceitos já apresentados sobre aritmética binária e em complemento e resolver 
alguns exercícios para exemplo. Inicialmente, vamos considerar apenas números positivos (o sinal não será 
representado). 
 
 
 
 
 
Exemplo de Operações de Adição
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 Operações de Subtração
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 
Exercício: 
Suponha um sistema posicional de numeração na base 6. Determine os valores de R, S, T, V, X e Z. 
RVTZR 
+ SRSVZ
TFXVZS 
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 máximo 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 (não vai-um). 
c) S = 5, porque T + S = 0 o que significa que T + S = 6 (porque não pode ser 0, logo é 0 + base = 6 e vai um 
para a próxima 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 expressões, temos 2R = 6 ou 
R = 3 logo 
Z = 2 e 
X = 4 
4.1 ARITMÉTICA EM COMPLEMENTO - SOMA EM COMPLEMENTO A UM 
O algoritmo da soma em complemento a um é: 
a) Somar os dois números, bit a bit, inclusive o bit de sinal. 
b) Avaliação dos casos de "vai-um": 
b.1) Se não ocorreu vai-um para o bit de sinal nem para fora do número: 
--- este é o resultado correto; 
b.2) Se ocorrer "vai-um" só para o bit de sinal (e não para fora do número): 
--- incorreto - ocorreu overflow 
------- (isto significa que o resultado excede a faixa de representação para o número de bits adotado). 
b.3.1) Se ocorrer "vai-um" para fora do número: 
--- para obter o resultado final, soma-se o "vai-um" externo (para fora do número) ao resultado da soma; o bit 
para fora do número (que excede o número de bits adotado na representação) é desprezado. 
b.3.2) Nesta soma final também pode ocorrer "vai-um" no último bit; 
--- se o número de "vai-um" ocorridos (para o bit de sinal, para fora do número ou na soma final) for par (o que 
equivale a inverter duas vezes o sinal), 
------ o resultado está correto; 
--- se o número for ímpar (1 ou 3 "vai-um"): 
------ o resultado está incorreto - ocorreu overflow. 
 
Exemplos (referidos aos casos acima), considerando representação com 6 bits: 
caso b.1: 
15 +10 = 
2510
 caso b.2: 
15 + 22 = 3710
 caso b.3: 
-15 -10 = -2510
 caso b.3: 
-15 -22 = -3710
 _111 1111 1 1 1 
001111 (+) 001111 (+) 110000 (-) 110000 (-) 
+ 001010 (+) + 010110 (+) + 110101 (-) + 101001 (-)
011001 (+) 100101 (-) 100101 011001 
 + ______1 + ______1
 100110 (-) 011010 (+) 
 CORRETO OVERFLOW CORRETO OVERFLOW
 (não ocorreu 
"vai-um") 
(só ocorreu 
"vai-um" para 
o bit de sinal)
 
(ocorreu "vai-
um" p/ bit de 
sinal e p/ fora 
do nº mas não 
na soma final 
- nº de "vai-
um" é par) 
 
(ocorreu "vai-
um" só p/ fora 
do nº mas não 
na soma final 
- nº de "vai-
um" é ímpar)
 
obs.: soma de 
dois nº 
positivos não 
poderia dar 
negativo 
 
obs.: soma de 
dois nº 
negativos não 
poderia dar 
positivo 
A faixa de repreentação com 6 bits em C1 vai de -31 a +31. Conferindo as contas pela representação decimal, 
vemos que os resultados fora desta faixa excedem a faixa da representação e não podem ser representados com 
6 bits (portanto, com este número de bits, ocorre overflow). 
 
Existe um teste prático que, quando ambos os números tem o mesmo sinal, pode mostrar se ocorreu overflow e 
o resultado obtido está incorreto: basta ver que na soma de dois números negativos, o resultado só pode ser 
negativo, e a soma de dois números positivos só poderia dar resultado positivo! 
4.2 ARITMÉTICA EM COMPLEMENTO - SOMA EM COMPLEMENTO A DOIS 
O algoritmo da soma (ou subtração) em complemento a dois é: 
a) Somar os dois números, bit a bit, inclusive o bit de sinal. 
b) Despreza-se o bit para fora do número, se houver. 
c.1) Se não ocorreu vai-um para o bit de sinal nem para fora do número ou 
c.2) Se ocorrer "vai-um" tanto para o bit de sinal quanto para fora do número (equivale a inverter duas vezes o 
sinal): 
--- o resultado está correto; 
d.1) Se ocorrer "vai-um" só para o bit de sinal (e não para fora do número): 
d.2) Se não ocorrer "vai-um" para o bit de sinal e somente ocorrer para fora do número: 
--- o resultado é incorreto - ocorreu overflow 
------- (isto significa que o resultado excede a faixa de representação para o número 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 representação com 6 bits: 
caso c.1: 
15+10 = 2510
 caso d.1: 
15 + 17 = 3210
 caso c.2: 
-15 -10 = -2510
caso c.2: 
-15 -17 = -3210
caso d.2: 
-15 -27 = -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
 (não ocorreu 
"vai-um") 
(só ocorreu 
"vai-um" para 
o bit de sinal) 
 
(ocorreu "vai-
um" p/ bit de 
sinal e p/ fora 
do nº - o nº de 
"vai-um" é 
par) 
(ocorreu "vai-
um" p/ bit de 
sinal e p/ fora 
do nº - o nº de 
"vai-um" é par)
(só ocorreu "vai-
um" p/ fora do nº - 
o nº de "vai-um" é 
ímpar) 
 
obs.: soma de 
nº positivos 
não poderia 
dar negativo 
 
(despreza-se o 
"vai-um" para 
fora do 
número) 
(despreza-se o 
"vai-um" para 
fora do 
número) 
obs.: soma de nº 
negativos não 
poderia dar 
positivo (despreza 
"vai-um" p/ fora 
do nº) 
A faixa de repreentação com 6 bits em C2 vai de -32 a +31. Conferindo as contas pela representação decimal, 
vemos que os resultados fora desta faixa estão necessariamente incorretos (ocorreu overflow) 
 
Pode-se aplicar o mesmo teste prático que, quando ambos os números tem o mesmo sinal, pode mostrar se 
ocorreu overflow e o resultado obtido está incorreto: basta ver que na soma de dois números negativos, o 
resultado só pode ser negativo, e a soma de dois números positivos só poderia dar resultado positivo! 
4.3 ARITMÉTICA EM SINAL E MAGNITUDE 
Em sinal e magnitude, o algoritmo da soma é: 
a) Se os números forem de mesmo sinal, basta somar os dois números e manter o sinal; 
b) Se os números forem de sinais diferentes, subtrai-se o menor número do maior; o sinal será o do maior 
número. 
c) Tem-se overflow sempre que ocorrer "vai-um" da magnitude para o bit de sinal (o número de bits da 
magnitude foi excedido). 
 
 
 
 
 
 
 __1 1 1 
0010 
(positivo) 1001 
(negativo) 
0110 (positivo e 
maior) 
1110 (negativo e 
maior) 1110 
(negativo) 
+ 0101 
(positivo) + 1101 
(negativo) + 1010 (negativo e 
menor) + 0100 (positivo e 
menor) + 1101 
(negativo) 
0111 1110 0100 1010 1011 
CORRETO CORRETO CORRETO CORRETO OVERFLOW
 
ambos 
positivos -> 
soma e 
mantém o 
sinal positivo 
 
ambos 
negativos -> 
soma e 
mantém o 
sinal 
negativo 
sinais contrários 
-> subtrai 
maior magnitude é 
positivo -> resultado é 
positivo 
sinais contrários 
-> subtrai 
maior magnitudeé 
negativo -> resultado é 
negativo 
 
ambos 
negativos -> 
soma 
"vai-um" 
para bit de 
sinal -> 
overflow 
 
5 REPRESENTAÇÃO DE NÚMEROS REAIS 
Até agora, passamos por cima de alguns outros problemas. Os dados numéricos podem ser fracionários (tais 
como 57,683). Como representar essa parte fracionária (após a vírgula que a separa da parte inteira), de forma 
que permita processamento eficiente e armazenamento com pouco consumo de memória? Vamos analisar esses 
problemas logo à frente. 
NÚMEROS REAIS 
Números reais são aqueles com parte fracionária (por exemplo, 57,683). Estamos acostumados a representar 
esses números no formato parte inteira, vírgula (ou ponto), parte fracionária: 
 
Esta representação, embora cômoda para cálculos no papel, não é adequada para processamento no 
computador. 
5.1 REPRESENTAÇÃO EM PONTO FLUTUANTE 
Consideremos o número 57,683 usado acima como exemplo. Este número pode ser também expresso como 
57,683 x 100. E também poderia ser expresso com 57683 x 10-3 ou ainda 0,57683 x 102. Na realidade, qualquer 
número - inteiro ou fracionário - pode ser expresso neste formato número x base expoente, em que variamos duas 
coisas: a posição da vírgula (que delimita a parte fracionária) e a potência à qual elevamos a base. Essa 
representação é denominada representação em ponto flutuante, pois o ponto varia sua posição, modificando, 
em conseqüência, o valor representado. 
REPRESENTAÇÃO NORMALIZADA 
Na representação normalizada, o número é preparado movendo a vírgula para a direita ou para a esquerda de 
forma que o número seja menor que 1, o mais próximo possível de 1, obviamente multiplicado por uma 
potência da base de forma a manter o valor do número. Em geral, isso significa que o primeiro dígito 
significativo seguirá imediatamente ao ponto (ou vírgula). 
Por exemplo: 
57,68310 --> normalizando ==> 0,57683 x 102 
0,000462810 --> normalizando ==> 0,4628 x 10-3 
0,000010112 --> normalizando ==> 0,1011 x 2-4
 De forma genérica, podemos representar a forma normalizada: 
± número x base ±expoente 
A parte do número 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. 
REPRESENTAÇÃO DE NÚMEROS REAIS NO COMPUTADOR 
Uma forma comum de representação de números reais no computador pode ser expressa como segue: 
 
Pode-se notar que a base não é expressa. Como a base, para cada computador, será sempre a mesma, não há 
necessidade de apresentar a base na representação (no exemplo, a base é 2). Dizemos que a base é implícita. 
Para cada computador, o número total M de bits para a representação, o número de bits para SN (sinal do 
número), para SE (sinal do expoente), para a mantissa e para o expoente, são pré-definidos em projeto. 
Assim, podemos concluir que, quanto maior o número de bits para o expoente, maior será a faixa de números 
que o computador pode representar (maior alcance); e quanto maior o número de bits para a mantissa, maior a 
precisão da representação. Porém, reduzindo-se a mantissa, perde-se precisão e há maior a necessidade de 
truncar o número (truncar um número é cortar algarismos significativos que não podem ser representados). 
Considerando-se a representação acima, na base implícita 2: 
maior expoente possível E: 2x - 1 
maior mantissa possível: 2y - 1 
maior número real: +(0.111...1 x 2E) sendo E = 2x - 1 
menor número real: -(0.111...1 x 2E) sendo E = 2x - 1 
menor real positivo: +(0.100...0 x 2 -E sendo E = 2x - 1 
maior real negativo: -(0.100...0 x 2 -E sendo E = 2x - 1 
 
FAIXA DE REPRESENTAÇÃO 
 
Como vimos anteriormente, a representação em ponto flutuante tem limites de alcance e de precisão. O alcance 
é limitado pelo número de bits do expoente. A precisão é determinada pelo número de bits da mantissa. 
Ocorre overflow quando o valor absoluto do dado a ser representado excede a capacidade de representação, 
porque o número de bits do expoente (neste caso, positivo) é insuficiente para representar o dado. 
 
Um outro problema ocorre na região de números próximos de zero, que tem o maior expoente negativo 
possível. Ocorre underflow quando o valor absoluto do dado a ser representado é tão pequeno que fica menor 
que o menor valor absoluto representável. Nesse caso, o expoente é negativo mas não representa os números 
muito próximos de zero e ocorre uma descontinuidade na representação, com os números próximos a zero não 
sendo representados. 
Underflow não é o mesmo que imprecisão. Dados na faixa de underflow não podem ser representados, 
ocorrendo estouro no expoente. No caso de imprecisão, a normalização permite que o dado seja representado, 
porém com perda de precisão. 
CARACTERÍSTICA 
Característica é o expoente, representado na forma de excesso de n, ou seja, 
CARACTERÍSTICA = EXPOENTE + EXCESSO 
A representação substituindo expoente por característica acarreta que todas as características serão positivas, de 
forma que é possível eliminar a representação do sinal do expoente. 
 
Se CARACTERÍSTICA = EXPOENTE + EXCESSO, 
sendo M o número de bits para a representação da característica, temos: 
0 = - 2M-1 + EXCESSO logo: EXCESSO = + 2M-1 
EXEMPLO DE REPRESENTAÇÃO EM PONTO FLUTUANTE 
a) Representação no IBM /370 
A família IBM /370 representa os dados em ponto flutuante com base implícita = 16, no seguinte formato: 
 
sendo 
SN = sinal do dado 
CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja, 
CARACTERÍSTICA = EXPOENTE + EXCESSO 
No caso da IBM, o excesso é de 6410, portanto: CARACTERÍSTICA = EXPOENTE + 6410
Exemplificando: expoente = 810, logo característica = 810 + 6410 = 7210
Assim, uma característica entre 0 e 6310 significa que o expoente é negativo, enquanto uma característica entre 
65 e 127 significa que o expoente é positivo (característica igual a 6410 significa expoente igual a 0).. 
Exemplo: Representar 25,510 
Como a base implícita é 16, vamos converter para hexadecimal: 25 / 16 = 1, resto 9 logo: 2510 = 1916 
Parte fracionária: 0.5 x 16 = 8,0 
Logo: 25,510 = 19,816 x 160 
Normalizando: 19,816 x 160 = 0,19816 x 162. Em binário com 24 bits, a mantissa normalizada será: 
0,19816 = 0001.1001.1000.0000.0000.0000 
 
Obs.: Como o número 0,19816 será representado em 24 bits, os bits não representativos (à direita) serão 
preenchidos com zeros. 
Como o expoente é 2, a característica será: 210 + 6410 = 6610. Em binário com 7 bits, será: 100.0010 
Portanto, a representação será: 
 b) Representação no PDP 11 
Os microcomputadores PDP 11 representam os dados em ponto flutuante com base implícita = 2, no seguinte 
formato: 
 
sendo 
SN = sinal do dado 
CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja, 
CARACTERÍSTICA = EXPOENTE + EXCESSO 
No caso do PDP 11, o excesso é de 12810, portanto: CARACTERÍSTICA = EXPOENTE + 12810
Exemplificando: expoente = - 28 logo característica = - 2810 + 12810 = 10010
Assim, uma característica entre 0 e 12710 significa que o expoente é negativo, enquanto uma característica entre 
129 e 255 significa que o expoente é positivo (característica igual a 1280 significa expoente igual a 0). 
Exemplo: Representar 25,510 
Como a base implícita é 2, vamos converter para binário: 2510 = 110012 
Parte fracionária: 0.5 x 2 = 1,0 
Logo: 25,510 = 11001,12 x 20 
Normalizando: 11001,12 x 20 = 0,1100112 x 25. 
Obs.: Como a base implícita no PDP 11 é 2, o número normalizado começará SEMPRE por 0,1. Assim, como o 
primeiro dígito da mantissa será sempre 1, o PDP 11 economiza um bit na mantissa não armazenando o 
primeiro bit da mantissa, já que está implícito que todos os números terão 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 precisão na representação é a mesma. 
Obs.1: Leia-se o SEMPRE da obs. acima como quase sempre. A única exceção corre por conta do zero, que 
nessecaso tem um tratamento especial. 
Em binário com 23 bits, a mantissa normalizada será (lembrando que o primeiro bit 1 não é representado): 
0,1100112 = 100.1100.0000.0000.0000.0000 
 
Obs.: Como o número 0,1100112 será representado em 23 bits, os bits não representativos (à direita) serão 
preenchidos com zeros. 
 
Como o expoente é 5, a característica será: 510 + 12810 = 13310. Em binário com 8 bits, será: 1000.0101 
Portanto, a representação será: 
 
Exercício: Qual das representações de ponto flutuante nos dois computadores exemplificados acima tem o 
maior alcance? 
Resp.: O alcance de uma representação depende do valor da base implícita, elevado ao maior valor que a 
característica pode assumir. 
O maior alcance será o que tiver o maior valor de Be ou seja, base elevada ao maior valor possível da 
característica. 
O IBM /370 tem 7 bits para característica (maior característica = 63) e base implícita 16, portanto 1663 = (24) 63 = 
2252 
O PDP tem 8 bits para característica (maior característica = 127) e base implícita 2, portanto 2127 
Conclusão: A representação em ponto flutuante do IBM /370 tem maior alcance que a do PDP 11. 
 
6 ARITMÉTICA EM PONTO FLUTUANTE 
6.1 Algoritmos da Soma, Subtração, Multiplicação e Divisão em Ponto Flutuante
SOMA E SUBTRAÇÃO EM PONTO FLUTUANTE 
Alguns computadores não tem suporte de hardware para fazer operações aritméticas em ponto flutuante. 
Alguns dispõem de processadores especializados que podem ser adquiridos como opcionais. Outros não tem 
esse recurso nem como opcional e nesse caso, as operações aritméticas em ponto flutuante são resolvidas 
através de programa (isso é, por software). 
Algoritmo: 
a) Verifica-se se uma das mantissas a operar é zero; caso afirmativo: 
- se for uma soma e uma das parcelas for zero ---> o resultado é igual à outra parcela 
- se for uma subtração e o subtraendo for zero ---> o resultado é igual ao minuendo 
- se for uma subtração e o minuendo for zero ---> o resultado é igual ao subtraendo, com o sinal invertido 
b) Se não houver zeros: 
- reduzir ao mesmo expoente (o maior); 
- somar / subtrair as mantissas; 
- normalizar o resultado. 
(m1 x be1) + (m2 x be2) = (m1 x be1) + (m3 x be1) = (m1 + m3 ) x be1 
(m1 x be1) - (m2 x be2) = (m1 x be1) - (m3 x be1) = (m1 - m3 ) x be1 
MULTIPLICAÇÃO EM PONTO FLUTUANTE 
Algoritmo: 
a) Verifica-se se uma das mantissas a operar é zero; caso afirmativo, o resultado é zero; 
b) Se não houver zeros: 
- somar os expoentes; 
- multiplicar as mantissas; 
- normalizar o resultado. 
(m1 x be1) x (m2 x be2) = (m1 x m2) b(e1+e2) 
Obs.: Ao fazer a soma dos expoentes, verificar qual a representação do expoente. 
- se o expoente estiver representado em Sinal e Magnitude, usar o algoritmo de soma em S/M; 
- se o expoente estiver representado em excesso de N (característica), ao somar as características estaremos 
somando N duas vezes; como característica é o expoente mais excesso de N, é necessário subtrair N da soma: 
(e1 + N) + (e2 + N) = (e1 + e2 + 2 N) logo é preciso subtrair N do resultado. 
DIVISÃO EM PONTO FLUTUANTE 
Algoritmo: 
a) Verifica-se se uma das mantissas a operar é zero; caso afirmativo: 
- se o divisor é zero, é impossível e dá erro por divisão de zero; 
- se o dividendo é zero, o resultado é igual a zero. 
b) Se não houver zeros: 
- subtrair os expoentes; 
- dividir as mantissas; 
- normalizar o resultado. 
(m1 x be1) / (m2 x be2) = (m1 / m2) b(e1-e2) 
Obs.: Ao fazer a subtração dos expoentes, verificar qual a representação do expoente. 
- se o expoente estiver representado em Sinal e Magnitude, usar o algoritmo de subtração em S/M; 
- se o expoente estiver representado em excesso de N (característica), ao subtrair as características estaremos 
eliminando N; como característica é o expoente mais excesso de N, é necessário somar N ao resultado: 
(e1 + N) - (e2 + N) = (e1 - e2) + (N - N) logo é preciso somar N ao resultado. 
 
7 REPRESENTAÇÃO DE CARACTERES E SÍMBOLOS 
 
A representação de caracteres e símbolos em computador é feita atribuindo-se a cada caractere ou símbolo um 
código binário. Desta forma são construídas tabelas (padrões) em que cada código binário representa para o 
computador um determinado caractere ou símbolo. 
Cada computador (ou cada fabricante) adota um determinado padrão. O número de bits que será utilizado no 
padrão é uma decisão do fabricante e determinará quantos caracteres (e símbolos) poderão ser representados. 
Nota: Se um padrão utiliza 7 bits, será possível representar até 27 = 128 caracteres e símbolos e com 8 bits serão 
28 = 256. 
O principal padrão hoje utilizado é o ASCII, de 7 bits, com uma variação de 8 bits (ASCII extendido) em que o 
8º bit permite representar outros 128 símbolos. 
Nota 1: Nos computadores PC, devido às diferenças lingüísticas, com a necessidade de representar caracteres 
diferentes para para dar suporte a outras línguas que não o inglês, foram criadas diversas "páginas de código". 
Por exemplo, a página de código 437 refere-se aos Estados Unidos, a 850 é a Multilingüe (Latin I), a 860 para 
Português (incluindo caracteres que não existem no inglês, tais como ç e os acentos). 
Nota 2: ASCII é um acrônimo para American Standard Code for Information Interchange (ou Código Padrão 
Americano para Intercâmbio de Informações). 
A seguir, apresentamos alguns exemplos de códigos da tabela ASCII: 
Decimal Binário Caractere
48 a 57 0011.0000 a 
0011.1001 de 0 até 9 (algarismos)
65 a 90 0100.0001 a 
0101.1010 
de A até Z 
(maiúsculas) 
97 a 122 0110.0001 a 
0111.1010 de a até z (minúsculas)
36 0010.0100 $ 
42 0010.1010 * 
43 0010.1011 + 
63 0011.1111 ? 
64 0100.0000 @ 
128 1000.0000 Ç 
135 1000.0111 ç 
132 1000.0100 ã 
142 1000.1110 Ã 
172 1010.1100 ¼ 
167 1010.0111 º 
166 1010.0110 ª 
225 1110.0001 ß 
241 1111.0001 ± 
Nota: Até 127, os códigos pertencem à tabela ASCII padrão, enquanto os códigos entre 128 e 255 fazem parte 
do ASCII extendida, podendo variar o caractere ou símbolo representado conforme a página de código 
configurada. 
Outros padrões foram e ainda são usados, por exemplo o EBCDIC (Extended Binary Coded Decimal 
Interchange Code, de 8 bits, usados nos computadores de grande porte IBM). 
 
8 REPRESENTAÇÃO DE NÚMEROS DECIMAIS CODIFICADOS EM BINÁRIO 
A representação de números reais em ponto flutuante é perfeitamente adequada para fazer cálculos 
matemáticos, científicos, etc. No entanto, nessa representação podemos ter perda de precisão do número 
representado ou mesmo haverá números que não podem ser representados por overflow (excedem o número de 
bits do expoente). Quando estamos representando números em que é necessário manter precisão até o último 
algarismo, tal como nos cálculos usados em procedimentos financeiros (o seu saldo no banco, por exemplo) não 
é admissível erro por aproximação. 
Para resolver essa restrição, foi desenvolvida uma outra representação: BCD ou Binary Coded Decimal (ou 
seja, Decimal Representado em Binário). A idéia do BCD é representar, em binário, cada algarismo de per si, 
de forma a que o número original seja integralmente preservado. A codificação BCD não possui extensão fixa, 
possibilitando representar números com precisão variável - quanto maior o número de bits, maior será a 
precisão. O microprocessador Intel 8080 suporta instruções de aritmética em BCD (p.ex.: instrução DAA). 
TABELA DE REPRESENTAÇÃO DOS NÚMEROS DECIMAIS EM BCD 
 
DECIMAL BCD DECIMAL BCD
0 0000 8 1000 
1 0001 9 1001 
2 0010 inválido 1010 
3 0011 inválido 1011 
4 0100 inválido 1100 
5 0101 inválido 1101 
6 0110 inválido 1110 
7 0111 inválido 1111 
Assim, o número 148 seria representado em BCD como: 
1 = 00012 
4 = 01002 e 
8 = 10002, logo: 
148 = 000101001000 (BCD). 
 
Exemplo 1: representação do número 14958 em BCD: 
1 4 9 5 8 número decimal 
xxxx00
01 
xxxx01
00 
xxxx10
01 
xxxx01
01 
xxxx10
00 representação BCD 
a+4 a+3 a+2 a+1 a endereço 
A codificação de um dígito em BCD requer 4 bits. Como a utilização de apenas 4 bits porbyte não é eficiente, 
normalmente são armazenados 2 dígitos BCD em um só byte. Esta representação é chamada BCD comprimido 
("packed BCD"). Podemos constatar que ainda assim há um desperdício de códigos; como BCD usa 4 bits 
(logo, haveria 16 representações possíveis) para representar 10 algarismos, 6 códigos não são utilizados. 
Portanto, essa representação é menos eficiente em relação à utilização dos recursos do computador que a 
representação em ponto flutuante. 
 
Exemplo 2: representação do número 14958 em BCD comprimido: 
1 49 58 número decimal 
xxxx10
01 
010010
01 
010110
00 representação BCD comprimido 
a+2 a+1 a endereço 
Os algoritmos da aritmética em BCD são os mesmos que os correspondentes à aritmética em decimal, à qual 
sempre estivemos acostumados. Por exemplo, na soma em BCD, soma-se os algarismos individualmente, em 
decimal; quando a soma ultrapassa dez, "vai um" para o dígito de maior ordem (a próxima "casa"), e assim por 
diante. 
 Exemplo.: 
DECIMAL BCD 
25 00100101 
+38 +00111000
513 01011101 
+110- +00011010- 
63 01100011

Mais conteúdos dessa disciplina