Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidade II
Conversão de Bases e Aritmética Computacional
2.1 SISTEMAS DE NUMERAÇÃO
Para contar os objetos o homem teve de criar símbolos para representar as grandezas. Esses
símbolos, chamados de algarismos, são a base dos Sistemas de Numeração.
No início foi utilizada uma correspondência um-para-um entre os objetos e os dedos da mão, ou
pedras, ou riscos. Esse seria um sistema unário, com um único símbolo:
Os algarismos romanos foram uma evolução em relação a esse sistema unário. Eles são aditivos e
são usados símbolos especiais para grupos:
A posição de cada algarismo em relação ao seu vizinho determina o número que está sendo
representado:
Apesar da evolução, a realização de cálculos com esse sistema era praticamente impossível. Mais
tarde surgiu o sistema arábico de numeração, com 10 algarismos (0 a 9), com as seguintes
vantagens:
Se analisarmos cada uma das quatro parcelas da soma à direita podemos perceber o seguinte:
Regra no. 1
a quantidade de unidades representada por um símbolo em uma dada posição no número
é igual à quantidade de unidades representada por este símbolo na formação da base,
multiplicada pela base (10 no caso) elevada a uma potência igual a (n-1), onde n é a
posição ocupada pelo símbolo, contada da direita para a esquerda.
Entendida a base 10, entende-se todas as demais bases, uma vez que a formação de qualquer
delas segue a mesma regra.
Vai ficar da seguinte forma: 10. Esse número ou esses símbolos contíguos representam um
conjunto com duas unidades na base binária.
Continuando.... 10, 11 (três unidades) ...??? Conforme pode ser visto não é possível representar
quatro unidades nesta base, com apenas duas posições (NOTAÇÃO POSICIONAL outra vez).
Vamos criar uma terceira posição à esquerda; nela colocamos o 1 e zeramos todas as posições à
direita;
100 é o quatro; 101 é o número que representa cinco unidades; 110 é o seis; 111 é o sete e então,
criamos nova posição para representar o oito – 1000;
o 1001 é o nove ..... e .... 1111101000 que representa mil unidades no sistema binário.
Atenção: os números no sistema binário vão ser formados por zeros e uns.
O que foi comentado sobre NOTAÇÃO POSICIONAL na base 10, vale também para a base 2,
ou seja, os uns (1) que aparecem numa cadeia ou número binário vão representar uma quantidade
de unidades que será função de sua posição na cadeia. Logicamente os zeros (0) não representarão nenhuma
unidade.
Como mostrado anteriormente, a cadeia 1001 representa um conjunto com nove unidades.
Aplicando a Regra no. 1, a cadeia acima pode ser desmembrada da seguinte forma:
1x23 + 0x22 + 0x21 + 1x20 = 1x8 + 0x4 + 0x2 + 1x1=8 + 0 + 0 + 1=9
Quantas unidades estão representadas na cadeia binária 101011? 43
Valem aqui, as mesmas considerações feitas para os sistemas binário, octal e decimal; notação
posicional, Regra no. 1, etc.
O número 135, no sistema octal, conforme vimos, representa um conjunto com 93 unidades. E no
sistema hexadecimal? Quantas unidades estão representadas no número 135?
1x162 + 3x161 + 5x160 = 1x256 + 3x16 + 5x1 = 256 + 48 + 5 = 309 ou trezentas e nove unidades.
234 2
0 117 2
1 58 2
0 29 2
1 14 2
0 7 2
1 3 2
1 1 2
1 0
1 1 0
3 1 1
Resposta: (3222,311)4
Coincidência? 234 outra vez? Lembra que no estudo de conversão da base decimal para qualquer
base N, convertemos o decimal 234 para a base binária? E o resultado obtido foi 11101010?
Exemplo. Converter (234,54)6 para a base decimal (10), considerando 3 casas depois da vírgula
Exercício de esclarecimento. Converter (94,944)10 para a base seis (6), considerando 3 casas
depois da vírgula.
94 6
4 15 6
3 2 6
2 0
5 3 5
Resposta: (234,535)6
Por que a parte fracionária do número (234,54)6 é diferente da parte fracionária no número
(234,535)6, sendo que, na conversão deste último foi utilizado o número (94,944)10, resultado da
conversão do primeiro desses valores da base 6 para a base 10?
Resposta: Na primeira conversão, da base 6 para a base 10, o resultado foi aproximado e
apresentado com 3 casas depois da vírgula. Dessa forma, o valor “da volta”, que sofreu uma outra
aproximação (3 casas depois da vírgula), pode não ser o mesmo.
Parte inteira
123 11
2 11 11
0 1 11
1 0
Parte fracionária
0,796 0,756 0,316
x 11 x 11 x 11
8,756 8,316 3,476
8 8 3
Resultado (102,883)11
Atenção: se M ou N for igual a 1, uma das bases já é a binária e a conversão será feita em uma só
etapa.
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Logicamente houve uma série de arredondamentos em cada parcela. O resultado com quatro
casas depois da vírgula será: (0,4787)10
O número (0,7A98)16 vale na base 10:
7/161 + 10/162 + 9/163 + 8/164 = 0,4375 + 0,0391 + 0,0022 + 0,0001= 0,4787
Vale a mesma observação com relação aos arredondamentos. O resultado com 4 casas depois da
vírgula será: (0,4797)10
A diferença na quarta casa decimal deve-se, logicamente, aos arredondamentos realizados.
0 0 0 – número positivo
1 – número negativo
Do 2o ao 6o bits são incluídos os dígitos (0’s e 1’s) que comporão o valor numérico da
cadeia binária; sua amplitude ou módulo.
Relembrando da notação posicional, na base binária, cada valor um representa o número
de unidades em função de sua posição no byte, de acordo com a representação abaixo:
S 16 8 4 2 1
Sinal
Ex 1: A cadeia binária 0 0 1 0 1 0 representa que número decimal? - Resposta + 10
Por que? O bit de sinal é igual a zero, portanto o número é positivo; os bits iguais
a 1, aqueles que representam unidades na cadeia binária, em suas posições, da direita para
a esquerda, valem 2 e 8 unidades que somadas, dão o valor numérico da cadeia.
Por que? O bit de sinal é igual a um, portanto o número é negativo; os bits iguais
a 1, aqueles que representam unidades na cadeia binária, em suas posições, da direita para
a esquerda, valem 1, 8 e 16 unidades que somadas, dão o valor numérico da cadeia.
Amplitude ou faixa de variação da representação em AS.
– 2(N-1) + 1 ≤ X ≤ +2(N-1) – 1
– 31 ≤ X ≤ + 31 (para byte de 6 bits)
Desvantagem – a representação em SA apresenta a desvantagem de aceitar duas cadeias
binárias diferentes para representar um único número.
Qual é esse número? É o 0 (ZERO).
0 0 0 0 0 0 1 0 0 0 0 0
CA - +7 000111 -3 100111
C2 - +7 000111 -3 + 64 = 61 111101
C1 - +7 000111 -3 + 63 = 60 111100
O bit 31 representa o sinal da mantissa; ele será igual a 0(ZERO) se o número for positivo e
igual a 1(HUM) se o número for negativo
Do bit 23 ao bit 30 é representado o expoente em excesso de 2(N-1) ou em excesso de 128, uma
vez que para o expoente, N=8;
Do bit 0 ao bit 22 é representada a mantissa em Complemento de 1;
A base exponencial é igual a 2;
O valor zero é representado por todos os dígitos iguais a zero.
Atenção para não confundir o sinal do número (bit 31, em precisão simples) com o sinal do
expoente que estará definido no bit 30, em função da forma de representação do expoente.
Números muito grandes, muito maiores que 1, sejam eles positivos ou negativos, terão, em ponto
flutuante, expoente positivo; números muito pequenos, ao contrário, terão expoente negativo.
Exemplo de número com expoente positivo: distância da Terra a Lua, medida em metros = 0,384
x 109 m; exemplo de número com expoente negativo: massa de um átomo de carbono 12 =
1,9926 x 10-26 kg.
Como será a representação do decimal +17 na Aritmética de ponto flutuante?
Esse valor normalizado (número representado com expoente para a base 2 e com a mantissa
menor que 1) é igual a 0,53125x25.
Como chegar ao valor 0,53125? Usamos uma mistura de tentativa e regra de três.
Tentativa: 17 está entre 24 e 25 ou, entre 16 e 32.
Toma-se o valor superior desse intervalo e aplica-se a regra de três:
Se 1 x 25 = 32; quanto vale X para que X x 25 seja igual a 17?
X = 17/32 = 0,53125
Representando o expoente 5 em Excesso de 128 + 5, teremos:
10000101.
A mantissa 0,53125 convertida para a base binária em complemento de 1 é igual a: 0,10001.
A representação em precisão simples será:
0 10000101 10001000000000000000000
Como será a representação do decimal –17?
1 10000101 01110111111111111111111
Inverte-se o sinal da mantissa e os bits da mantissa, uma vez que a representação é em
complemento de 1.
Apenas como informação, com esses 32 bits seria possível representar números negativos entre –
2127 e –2-129 e os números positivos entre +2-129 e +2127.
Exercício de fixação:
Representar o decimal 13,475 em binário com vírgula flutuante, em precisão simples (32 bits).
Representação: do expoente - Excesso de 2(N-1)
da mantissa – Complemento de 1
1) decimal 13,475
0 10000100 11010111100110011001100
ou
0 10000100 11010111100000000000000 para a situação de precisão com 10 bits na
mantissa.
- o quito e sexto bits são zeros e estão à direita do último bit 1, portanto, não sofreram
alteração.
A “prova” de que a cadeia resposta realmente corresponde à cadeia original negada pode ser feita
interpretando-se as cadeias e levando-as para a base 10(dez).
Pergunta 1: qual é o decimal correspondente à cadeia binária 001100 em Complemento de 2?
Resposta: usando a notação posicional
0x25 + 0x24 + 1x23 + 1x22 + 0x21 + 0x20 =
= 0x32 + 0x16 + 1x8 + 1x4 + 0x2 + 0x1 =
= 0 + 0 + 8 + 4 + 0 + 0 = (12)10
Pergunta 2: qual é o decimal correspondente à cadeia binária 110011 em Complemento de 2?
Resposta: 1o passo - usando a notação posicional para converter a cadeia binária para a base 10
(processo independente da forma de representação)
1x25 + 1x24 + 0x23 + 1x22 + 0x21 + 0x20 =
= 1x32 + 1x16 + 0x8 + 1x4 + 0x2 + 0x1 =
= 32 + 16 + 0 + 4 + 0 + 0 = 52
Atenção: este valor 52 não corresponde ao decimal equivalente à cadeia binária 110100
em Complemento de 2; ele faz parte do processo para se determinar essa cadeia binária.
2o passo: subtrai-se de 52, 2N, onde N é o número de bits do byte (6 no nosso caso).
52 – 26 = 52 – 64 = (-12)10
Conclusão: a resposta à Pergunta 1 é (12)10 e a resposta à Pergunta 2 só poderia ser (-12)
10 uma vez que realizamos a operação de negação da cadeia binária da Pergunta 1.
c) Negação em Complemento de 1
A negação em complemento de 1 também é bastante simples. Basta seguir a regra abaixo:
Trocam-se todos os bits da cadeia binária (0 para 1; 1 para 0).
Exemplos: negar a cadeia binária 001100 em Complemento de 1.
Resposta: 110011
A “prova” de que a cadeia resposta realmente corresponde à cadeia original negada pode
ser feita interpretando-se as cadeias e levando-as para a base 10(dez).
Pergunta 1: qual é o decimal correspondente à cadeia binária 001100 em Complemento de 1?
Exercícios de Revisão:
Representação de números binários e Negação de Números binários
3) Fazer uma análise crítica dos dois caminhos usados nos exercícios acima.
001011 010101
Utilizar os seguintes caminhos para a determinação das cadeias binárias:
A – regra de formação da cadeia binária;
B – transformar as cadeias binária em Excesso de 2(N-1) para Complemento de 2, negar
esta cadeia e interpretar as cadeias positivas
5) Demonstrar que os números decimais 35 e –41 não podem ser representados em nenhuma das
quatro formas de representação em um byte de 6 bits.
6) Determinar as cadeias binárias correspondentes aos decimais acima nas quatro formas de
representação, em byte de 8 bits.
Mais uma descoberta: após conhecer e trabalhar com as quatro formas de representação de
números binários chega-se a mais uma conclusão interessante: dado uma cadeia binária
representando um número negativo em Sinal e Amplitude (1o bit igual a 1), essa mesma cadeia
binária na forma de representação em Excesso de 2(N-1) representa o mesmo número só que com
sinal trocado, ou seja, um número positivo com mesma amplitude.
Essa constatação não é válida para cadeias binárias positivas, em Sinal e Amplitude.
0 1 0 1
Lembrando que o 10 + 0 + 0 + 1 + 1
da última operação 0 1 1 10
não é DEZ e sim um número que, no sistema binário, corresponde a duas unidades.
(*)
0 1 10 1
- 0 - 0 - 1 - 1
0 1 1 0
(*) A subtração (0-1) não é possível dentro do conjunto dos inteiros positivos. A exemplo do que
ocorre no sistema decimal, temos que “tomar emprestado” da ordem imediatamente superior.
Assim, na operação em questão, tomamos uma unidade emprestada da ordem superior que, ao
passar para a ordem que está tomando o “empréstimo” passa a valer o número de unidades
iguais à base elevado a 1 (ordem superior), ou 21 (duas unidades). Traduzindo a operação acima
para o sistema decimal, estamos subtraindo duas unidades de uma unidade e o resultado é uma
unidade.
Linha do "vai-um" 1 1 1 1
Amplitude 1 0 1 1 0 1
Amplitude 2 0 0 1 1 1
Soma 1 0 1 0 0
Linha do "vai-um" 1 1 1 1 1
Amplitude 1 1 1 1 0 1
Amplitude 2 0 1 1 1 1
Soma 0 1 1 0 0
O “vai-um” mais à esquerda sobrou; não existe bit para ele ocupar. Ele seria o primeiro dos seis
de um byte de 6 bits. Porém, como em sinal e amplitude o primeiro bit é de sinal, essa invasão
não é permitida. Mesmo que o fosse, a situação seria inusitada, uma vez que estaríamos somando
dois valores positivos (1o‘s bits iguais a 0) e obtendo como resposta um número negativo.
2a situação: as duas cadeias binárias a serem somadas têm sinais diferentes: subtrai-se do maior a
amplitude do menor; o sinal do resultado é igual ao sinal da cadeia de maior amplitude.
Linha do
"empréstimo" 10 10
Amplitude 1 0 1 1 0 1
Amplitude 2 0 0 1 1 0
Soma 0 0 1 1 1
Os bits tachados 1 foram, na verdade, emprestados para a ordem imediatamente abaixo, portanto,
emprestaram na verdade, 2 unidades.
Resposta: operação binária 101101 – 00110 = 100111
Correspondente decimal -13 + 6 = -7
+5 00101
+28 011100
-17 110001
Somando os dois primeiros valores:
1 1 1
Linha do "vai-um"
Amplitude 1 0 0 1 0 1
Amplitude 2 1 1 1 0 0
Soma 0 0 0 0 1
Ocorreu OVERFLOW uma vez que o bit mais à esquerda não cabe no byte ou estaria invadindo o
bit reservado para o sinal.
Se ao invés dos dois primeiros somássemos os dois últimos (subtração das amplitudes) o
resultado seria:
Linha do "empréstimo" 2o nível 1 10
Linha do "empréstimo" 1o nível 10
Amplitude 1 1 1 1 0 0
Amplitude 2 1 0 0 0 1
Soma 1 0 1 0 1 1
Como os bits de sinal são iguais a 0 (zero) a soma binária no computador será: 010000
O decimal equivalente a esse número binário, em AS, é igual a +16. Portanto, neste último caso,
as associações feitas levaram a uma operação com resultado numérico (não deu OVERFLOW).
b) Soma em Complemento de 2
A soma nessa forma de representação de números binários parece ser mais simples do que a soma
em SA. Por que mais simples? Com a soma em complemento de 2 não é necessária atenção aos
sinais dos números nem às suas amplitudes. Somam-se os números como se eles não tivessem
sinal e não estivessem representados em nenhuma das formas de conhecidas de representação. O
resultado deve ser analisado e deve satisfazer a duas regras para ser válido. Caso contrário, se
uma das duas regras não for satisfeita, terá ocorrido o conhecido OVERFLOW.
As regras são:
1) se existe um “vai-um” para fora do bit mais significativo (para fora e à esquerda do byte)
deve haver um “vai-um” para o bit mais significativo (bit com maior valor posicional) e o
“vai-um” para fora do byte deve ser desprezado;
2) se não existe um “vai-um” para fora do bit mais significativo (para fora e à esquerda do byte)
não deve haver um “vai-um” para o bit mais significativo (bit com maior valor posicional).
Se o resultado for válido (não ocorrência de OVERFLOW) a cadeia binária estará em
Complemento de 2 e como tal deverá ser interpretada.
Exemplos:
1) somar as cadeias binárias 001111 e 100011 que equivalem aos números decimais +15 e –
29.
Linha do "vai-um" 1 1 1 1
Número 1 0 0 1 1 1 1
Número 2 1 0 0 0 1 1
Soma 1 1 0 0 1 0
O resultado satisfaz à regra no. 2 ou, em outras palavras, não violou nenhuma da regras. A soma
é, então, a cadeia binária 110010 que, em complemento de 2 vale:
110010 x (-1) = 001110 = (+14)10
Se após negarmos a cadeia binária em complemento de 2 e de ter convertido para a base dez,
encontramos o decimal +14, indica que a cadeia binária em complemento de 2, antes da negação,
era igual ao decimal –14, que é o resultado da operação (+15) + (-29)
2) somar as cadeias binárias 011010 e 111010 que equivalem aos números decimais +26 e –
6.
Linha do "vai-um"
1 1 1 1
Número 1 0 1 1 0 1 0
Número 2 1 1 1 0 1 0
Soma 0 1 0 1 0 0
O resultado satisfez à regra no. 1 ou, não violou nenhuma da regras. A soma é, então, a cadeia
binária 010100 que, em complemento de 2 equivale a 20 unidades na base decimal.
3) somar as cadeias binárias 001101 e 011000 que equivalem aos números decimais +13 e
+24.
Linha do "vai-um" 1 1
Número 1 0 0 1 1 0 1
Número 2 0 1 1 0 0 0
Soma 1 0 0 1 0 1
O resultado violou à regra no. 2 ou uma vez que, se não houve “vai-um” para fora do bit mais
significativo, não poderia ter havido “vai-um” para o bit mais significativo. Ocorreu um
OVERFLOW. A cadeia binária 101001 não tem sentido, não há como interpretá-la, embora
possamos cair na “tentação” de achar que o resultado equivale ao número decimal –22
(interpretação da cadeia binária em complemento de 2). Não somamos 2 números positivos?
Como é possível obtermos um resultado negativo?
4) somar as cadeias binárias 100101 e 110110 que equivalem aos números decimais –27 e –
10 .
O resultado violou à regra no. 1 uma vez que, houve “vai-um” para fora do bit mais significativo,
e não houve “vai-um” para o bit mais significativo. Ocorreu um OVERFLOW. A cadeia binária
011011, assim com a cadeia binária do exemplo no. 3 não tem sentido, não há como interpretá-la,
embora possamos também cair na “tentação” de achar que o resultado equivale ao número
decimal +27 (interpretação da cadeia binária em complemento de 2). Não somamos 2 números
negativos? Como é possível obtermos um resultado positivo?
c) Soma em Complemento de 1
A soma nessa forma de representação de números binários é bastante semelhante à soma em
complemento de 2. As regras de validação é que são outras. Aqui também não é necessária
atenção aos sinais dos números nem às suas amplitudes. Somam-se os números como se eles não
tivessem sinal e não estivessem representados em nenhuma das formas de conhecidas de
representação. O resultado deve ser analisado e deve satisfazer a três regras para ser válido. Caso
contrário, se uma das regras não for satisfeita, terá ocorrido o conhecido OVERFLOW.
As regras são:
1) se existe um “vai-um” para fora do bit mais significativo (para fora e à esquerda do byte)
deve haver um “vai-um” para o bit mais significativo (bit com maior valor posicional) e o
“vai-um” para fora do byte deve ser somado ao resultado;
2) se não existe um “vai-um” para fora do bit mais significativo (para fora e à esquerda do
byte) não deve haver um “vai-um” para o bit mais significativo (bit com maior valor
posicional);
3) se existe um “vai-um” para fora do bit mais significativo (para fora e à esquerda do byte)
e não existir um “vai-um” para o bit mais significativo (bit com maior valor posicional), o
“vai-um” para fora do byte deve ser somado ao resultado e a regra do carry deve ocorrer
até o passo final, ou até o bit mais significativo.
Se o resultado for válido (não ocorrência de OVERFLOW) a cadeia binária estará em
Complemento de 1 e como tal deverá ser interpretada.
Exemplos:
1. somar as cadeias binárias 001111 e 100011 que equivalem aos números decimais +15
e –28.
Linha do "vai-um" 1 1 1 1
Número 1 0 0 1 1 1 1
Número 2 1 0 0 0 1 1
Soma 1 1 0 0 1 0
O resultado satisfez à regra no. 2 ou, em outras palavras, não violou nenhuma da regras. A soma
é, então, a cadeia binária 110010 que, em complemento de 1 vale:
110010 x (-1) = 001101 = (+13)10
Se após negarmos a cadeia binária em complemento de 1 e de ter convertido para a base dez,
encontramos o decimal +13, indica que a cadeia binária em complemento de 1, antes da negação,
era igual ao decimal –13, que é o resultado da operação (+15) + (-28)
2. somar as cadeias binárias 011010 e 111010 que equivalem aos números decimais +26
e –5.
Linha do "vai-um" 1 1 1 1
Número 1 0 1 1 0 1 0
Número 2 1 1 1 0 1 0
Soma 0 1 0 1 0 0
Linha do “vai-um” no
2
Soma (repetição da 1a) 0 1 0 1 0 0
O resultado satisfez à regra no. 1 ou, não violou nenhuma da regras. A soma é, então, a cadeia
binária 010100 que, em complemento de 2 equivale a 20 unidades na base decimal.
3. somar as cadeias binárias 001101 e 011000 que equivalem aos números decimais +13
e +24.
Linha do "vai-um" 1 1 1 1
Número 1 0 0 1 1 0 1
Número 2 0 1 1 0 0 0
Soma 1 0 1 0 0 1
O resultado violou à regra no. 2 ou uma vez que, se não houve “vai-um” para fora do bit mais
significativo, não poderia ter havido “vai-um” para o bit mais significativo. Ocorreu um
OVERFLOW. A cadeia binária 101001 não tem sentido, não há como interpretá-la, embora
possamos cair na “tentação” de achar que o resultado equivale ao número decimal –22
(interpretação da cadeia binária em complemento de 1). Não somamos 2 números positivos?
Como é possível obtermos um resultado negativo?
4. somar as cadeias binárias 100101 e 110110 que equivalem aos números decimais –26
e –9 .
Linha do "vai-um"
1 1
Número 1 1 0 0 1 0 1
Número 2 1 1 0 1 1 0
Soma 0 1 1 0 1 1
Linha do “vai-um”
no 2 1 1
Soma (repetição da
1a) 0 1 1 0 1 1
Unidade que sobrou 1
Soma final 0 1 1 1 0 0
O resultado violou à regra no. 3 uma vez que, houve “vai-um” para fora do bit mais significativo,
e não houve “vai-um” para o bit mais significativo. Realizando a soma do bit que sobrou ao
primeiro resultado, a regra do carry não ocorreu até o bit mais significativo.
Ocorreu um OVERFLOW. A cadeia binária 011100 não tem sentido, não há como interpretá-la,
embora possamos, naquela estória da “tentação”, achar que o resultado equivale ao número
decimal +28 (interpretação da cadeia binária em complemento de 1). Não somamos 2 números
negativos? Como é possível obtermos um resultado positivo?
5. somar as cadeias binárias 110000 e 101111 que equivalem aos números decimais –15
e –16 .
Linha do "vai-um"
1
Número 1 1 1 0 0 0 0
Número 2 1 0 1 1 1 1
Soma 0 1 1 1 1 1
Linha do “vai-um”
no 2 1 1 1 1 1
Soma (repetição da
1a) 0 1 1 1 1 1
Unidade que sobrou 1
Soma final 1 0 0 0 0 0
O resultado não violou a regra no. 3 uma vez que, houve “vai-um” para fora do bit mais
significativo, e não houve “vai-um” para o bit mais significativo. Realizando a soma do bit que
sobrou ao primeiro resultado, a regra do carry ocorreu até o bit mais significativo. A cadeia
binária 100000 corresponde ao decimal –31.
O poderá do parágrafo anterior se justifica porque haverá situações em que as DUAS VEZES 2(N-
1)
nem farão parte da cadeia binária resultante. Nesse caso poderá ser necessário somar 2(N-1) ao
resultado.
Enunciando as regras específicas da soma em Excesso de 2(N-1) e resolvendo alguns exemplo, as
situações acima ficarão mais claras.
A soma em Excesso de 2(N-1) se faz como se as cadeias binárias não tivessem sinal (semelhante às
somas em Complemento de 2 e Complemento de 1). O resultado da soma deve obedecer a uma
das regras abaixo:
1) Se não houver “vai-um” para fora do byte ou à esquerda do bit mais significativo, devem
ser subtraídas 2(N-1) unidades da cadeia binária resultante. Esta cadeia binária representará
o resultado da soma em Excesso de 2(N-1). Caso não haja unidades suficientes para que se
realize essa subtração, ocorrerá OVERFLOW, e a cadeia binária resultante não terá
interpretação.
2) Se houver um “vai-um” para fora do byte ou à esquerda do bit mais significativo, devem
ser somadas 2(N-1) unidades à cadeia binária resultante. Esta cadeia binária representará o
resultado da soma em Excesso de 2(N-1). Caso essa soma provoque um NOVO “vai-um”
para fora do byte ocorrerá OVERFLOW, e a cadeia binária resultante não terá
interpretação.
O “vai-um” para fora dessa segunda regra equivale à desprezar 2N unidades da cadeia
resultante, uma vez que, na nova posição que esse 1 ocuparia (um sétimo bit), o número de
unidades que ele estaria representando seria 2N. É necessário recompor a estrutura de
formação da cadeia, somando a ela 2(N-1) .
ATENÇÃO: a soma em Excesso de 2(N-1), com suas respectivas regras necessita ser testada
com um grande número de exercícios uma vez que ela não consta nas bibliografias ou
referências até agora analisadas. São resultados da análise e interpretação do autor.
Exemplos:
1. somar as cadeias binárias 101111 e 000011 que equivalem aos números decimais +15 e –
29. A resposta será -14
Linha do "vai-um" 1 1 1 1
Número 1 1 0 1 1 1 1
Número 2 0 0 0 0 1 1
Soma 1 1 0 0 1 0
Para interpretar o valor decimal da cadeia binária 010010 em Excesso de 2(N-1), devemos
converter a cadeia acima e subtrair 2(N-1) ou 32.
Com a conversão da cadeia binária chegamos ao decimal +18. O resultado da soma (+18)+(-32)
= -14, que é o resultado da soma binária em Excesso de 2(N-1).
2. somar as cadeias binárias 111010 e 011010 que equivalem aos números decimais +26 e –
6. O resultado será uma cadeia binária que, em Excesso de 2(N-1) representará o decimal
+20.
Linha do "vai-um"
1 1 1 1
Número 1 1 1 1 0 1 0
Número 2 0 1 1 0 1 0
Soma 0 1 0 1 0 0
Na operação de soma foi um “vai-um” para fora do Byte que, conforme vimos, vale 64 unidades
pela posição que ele ocuparia na cadeia binária. Se desprezarmos esse 1 como o fazemos em
Complemento de 2 estaríamos jogando fora 64 unidades, 32 de cada parcela, uma vez que foi
esse o valor somado no momento de se determinar a cadeia binária equivalente. O resultado ou
soma estaria descaracterizado da propriedade ou regra de criação da forma de complementação.
Dessa forma, devemos somar 32 unidades à soma obtida para que ela tenha a característica da
representação em Excesso de 2(N-1) .
Soma 0 1 0 1 0 0
“Vai-um” para fora 1 0 0 0 0 0
Soma final 1 1 0 1 0 0
O resultado satisfez à regra no. 2 ou. Somando-se 2(N-1) ao resultado, não ocorreu outro “vai-um”
para fora do byte.
Para saber a qual decimal corresponde a cadeia binária Soma final basta aplicar a regra de
formação da base ou: 110100 = (+52)
(+52) – (+32) = +20
3. somar as cadeias binárias 101101 e 111000 que equivalem aos números decimais +13 e
+24. A resposta vai ser um OVERFLOW uma vez que, previamente, sabemos que +37
unidades não “cabe” em um byte de 6 bits em quaisquer das formas de representação
vistas.
Como o objetivo é testar a regra da soma BINÁRIA, teremos:
Linha do "vai-um"
1 1 1
Número 1 1 0 1 1 0 1
Número 2 1 1 1 0 0 0
Soma 1 0 0 1 0 1
Conforme determina a regra 2, quando ocorre “vai-um” para fora do byte, devem ser somadas 32
unidades ou 100000 ao primeiro resultado. Teremos:
Linha do "vai-um"
1
Soma 1 0 0 1 0 1
2(N-1) 1 0 0 0 0 0
Resultado final 0 0 0 1 0 1
O resultado final violou a regra no. 2 uma vez que, somado 2(N-1) ao resultado, ocorreu um novo
“vai-um” para fora do byte. Ocorreu um OVERFLOW. A cadeia binária 000101 não tem sentido,
não há como interpretá-la.
4. somar as cadeias binárias 000101 e 010110 que equivalem aos números decimais –27 e –
10 . A resposta será OVERFLOW pois sabemos que uma cadeia binária equivalente ao
decimal –37 não cabe em um byte de 6 bits, independente da forma de representação.
Como chegar à situação para interpretar que houve OVERFLOW?
Linha do "vai-um" 1
Número 1 0 0 0 1 0 1
Número 2 0 1 0 1 1 0
Soma 0 1 1 0 1 1
A regra no. 1 diz que, quando não ocorre “vai-um” para forma do byte, devem ser subtraídas da
primeira soma, 32 unidades ou, 100000.
A simples observação da cadeia resultante da primeira soma permite verificar que não é possível
extrair 32 unidades dela porque ela não possui 32 unidades para serem subtraídas. A conversão
da cadeia binária 011011 leva ao decimal 27, que é menor que 32. Como não se pode tirar 32
laranjas de 27 laranjas, ocorreu situação de OVERFLOW.
a) Sinal e Amplitude.
0 0 1 1
Operações básicas (fatos)
x x x x
0 1 0 1
0 0 0 1
Prof.: José Eustáquio do Amaral Pereira – 11/08/09 3
0 1 1 1
0 1
FACULDADE ESTÁCIO DE SÁ DE BELO HORIZONTE
Curso Superior de Tecnologia em Redes de Computadores
Disc: Arquitetura de Computadores Prof: José Eustáquio do Amaral Pereira
110001
bits: mais menos significativos significativos
Na divisão binária, com os recursos vistos até agora, existem dois outros problemas. O primeiro é
que numa divisão entre dois valores inteiros, o resultado não é necessariamente inteiro. O
segundo é que numa divisão entre números, o dividendo, em geral, pode ter uma dimensão maior
que o divisor. É o problema inverso da multiplicação em que o produto tem dimensão maior que
as parcelas.
O segundo problema é de fácil solução: reservam-se o dobro do número de bytes para o
dividendo, em relação ao divisor e ao quociente.
Para resolver o primeiro problema pode-se reservar também o dobro de bytes para o quociente,
sendo metade para armazenar a parte inteira e metade para a parte não inteira. Entre esses grupos
poderíamos imaginar a colocação do ponto.
A cadeia binária equivalente ao decimal 137 é 10001001 (conversão de base) e a cadeia binária
equivalente ao decimal 8 é 1000 (o sinal negativo só será considerado na cadeia binária dentro do
byte na forma de representação Sinal e Amplitude).
1 0 0 0 1 0 0 1 1 0 0 0
1 0 0 0 1 0 0 0 1
0 1 0 0 1
1 0 0 0
1
A parte inteira da divisão é 10001, que na representação em SA, em um byte de 6 bits ficaria:
110001 . O bit de sinal é igual a um porque o quociente é negativo. Se quisermos obter a
resposta da parte fracionária deveríamos dividir o resto (1) pelo divisor (1000) sucessivamente,
até que o resto seja igual a 0 (zero) ou até que se atinja a precisão desejada.
No caso, vamos fixar a precisão em 5 dígitos binários porque no byte de 6 bits, mesmo para a
parte fracionária, o primeiro bit é de sinal.
1 0 0 0 1 0 0 0
1 0 0 0 0 0 1
0
A parte fracionária do quociente é 0,001. Antes que os cinco bits fossem efetivamente usados, o
resto da divisão deu zero.
Como preencher o byte reservado à parte fracionária?
O primeiro bit é de sinal e, no caso, é igual a 1. Os demais bits são preenchidos da esquerda para
a direita (do mais significativo para o menos significativo) ao contrário do procedimento para a
parte inteira.
A resposta completa da divisão é então:
110001 100100 com a vírgula ou ponto, entre os dois bytes.
Associação dos códigos com bytes lógicos de 6 bits com o sistema octal
Exemplos
Associação dos códigos com bytes lógicos de 8 bits com o sistema hexadecimal
1100 1001 C9 I
0110 1111 6F ?
L u i z
Prof.: José Eustáquio do Amaral Pereira – 11/08/09 4
FACULDADE ESTÁCIO DE SÁ DE BELO HORIZONTE
Curso Superior de Tecnologia em Redes de Computadores
Disc: Arquitetura de Computadores Prof: José Eustáquio do Amaral Pereira