sistemas digitais módulo 2 - daniel.prof.ufu.br · sistemas digitais módulo 2 representações...
TRANSCRIPT
Sistemas Digitais Módulo 2
Representações com Sinal e Aritmética Digital
Graduação em Sistemas de Informação
Prof. Dr. Daniel A. Furtado
Universidade Federal de Uberlândia Faculdade de Computação
Conteúdo
Adição, subtração e multiplicação binária
Representação de números com sinal
• Sinal Magnitude
• Complemento de 2
Adição e subtração no sistema de complemento de 2
• Detecção de overflow
Adição no sistema hexadecimal
Prof. Daniel A. Furtado
Adição Binária
Semelhante a adição de números decimais;
Possibilidades:
• 0 + 0 = 0
• 0 + 1 = 1
• 1 + 0 = 1
• 1 + 1 = 10 0 e “vai um” para próxima posição
• 1 + 1 + 1 = 11 1 e “vai um” para próx. posição
Exemplos:
Prof. Daniel A. Furtado
111 (7) 010 (2) +
1001 (9)
1011 (11) 1111 (15) +
11010 (26)
10,11 (2,75) 11,01 (3,25) +
110,00 (6,00)
1 1 1 1 1 1 1 1 1 1
Subtração Binária
Semelhante à subtração de números decimais;
Exemplos:
1 0 0 1 0 1 (37) 0 0 1 0 1 1 (11) −
1
0 1 1 0 1 0 (26)
1 1
1 0 0 1 1 1 0 0 (156) 0 1 0 1 0 0 1 1 (83) −
1
0 1 0 0 1 0 0 1 (73)
1 1 0 0 0 0
Multiplicação Binária
Semelhante à multiplicação decimal
Exemplo:
1001 (9) 1011 (11) x
1001 1001
0000 1001
1100011 (99)
Produtos parciais
Multiplicação Binária
Na maioria das máquinas sequenciais, os produtos parciais obtidos na multiplicação são somados por meio de sucessivas operações de soma (dois termos de cada vez):
1001 1001 +
11011
0000 +
011011
1001 +
1100011
1001 (9) 1011 (11) x
1001 1001
0000 1001
1100011 (99)
Representação de Números com Sinal
Além da magnitude do número, pode ser necessário representar também o seu sinal;
Há duas maneiras principais:
• Sistema sinal-magnitude;
• Sistema de complemento de 2.
Prof. Daniel A. Furtado
Números com Sinal: Sistema Sinal-Magnitude
No sistemas sinal-magnitude um bit é acrescentado ao número para indicar o seu sinal. Esse bit é denominado bit de sinal;
A convenção mais utilizada é:
• Bit de sinal = 0 número positivo;
• Bit de sinal = 1 número negativo.
Prof. Daniel A. Furtado
Sistema Sinal-Magnitude - Exemplos
Números +6 e -6, utilizando uma representação com 4 bits:
Números +21 e -21, utilizando uma representação com 8 bits:
Prof. Daniel A. Furtado
𝟎 1 1 0 ( + 6 )
Magnitude (6) Bit de sinal (+)
𝟏 1 1 0 ( - 6 )
Magnitude (6) Bit de sinal (-)
𝟎 0 0 1 0 1 0 1 (+21)
7 bits para a magnitude (21)
Bit de sinal (+)
𝟏 0 0 1 0 1 0 1 (-21)
7 bits para a magnitude (21)
Bit de sinal (-)
Sistema Sinal-Magnitude - Desvantagens
Embora seja muito simples, o sistema sinal-magnitude não é comumente utilizado em sistemas digitais, pois sua implementação depende de um circuito lógico mais complexo;
Outra desvantagem é a dupla representação para o número 0 (+0 e -0);
Prof. Daniel A. Furtado
Números com Sinal: Sistema de Complemento de 2 - Noção
Prof. Daniel A. Furtado
Círculo amarelo: todos os binários possíveis com 4 bits;
Círculo vermelho: Valor decimal que os binários representam, sem considerar sinalização;
Círculo azul: valores sinalizados que os binários representam quando interpretados no sistema de complemento de 2;
OBS: repare que o bit mais significativo também indica o sinal. Entretanto a representação é diferente daquela utilizada no sistema sinal-magnitude.
Números com Sinal: Sistema de Complemento de 2
Números positivos:
• Acrescenta-se um bit de sinal 0 à esquerda do MSB, como no sistema sinal-magnitude;
Números negativos:
1. Inverte-se todos os bits da magnitude do número e soma-se 1 ao bit menos significativo (LSB);
2. Em seguida, acrescenta-se o bit de sinal 1 à esquerda do MSB;
Prof. Daniel A. Furtado
O valor resultante deste procedimento é denominado complemento de dois do número
Sistema de Comp. de 2 – Exemplo: +9
1. Encontrar o binário puro corresponde ao 9 (magnitude):
2. Acrescentar o bit de sinal com o valor 0;
Prof. Daniel A. Furtado
910 = 10012
+9 = 01001
1001 0
(no sistema de comp. de 2)
Sistema de Comp. de 2 – Exemplo: -9
1. Encontrar o binário puro corresponde ao 9 (magnitude):
2. Calcular o complemento de 2 do número anterior:
3. Acrescentar o bit de sinal 1 à esquerda do MSB:
Prof. Daniel A. Furtado
910 = 10012
1001 0110 1 +
0111
1 0111
−910= 10111 (no sistema de comp. de 2)
complemento de 1 de 1001 (inversão dos bits)
0110
complemento de 2 de 1001
Sistema de Comp. de 2 – Exemplo: -24
1. Encontrar o binário puro corresponde ao 24 (magnitude):
2. Calcular o complemento de 2 do número anterior:
3. Acrescentar o bit de sinal 1 à esquerda do MSB:
Prof. Daniel A. Furtado
2410 = 110002
11000 00111 complemento de 1 (inversão dos bits)
1 +
01000 complemento de 2 (após somar 1)
1 01000
−2410= 101000 (no sistema de comp. de 2)
Sistema de Complemento de 2 – Extensão do Sinal
Sistemas digitais geralmente armazenam números binários utilizando um número de bits múltiplo de 8 (8, 16, 32, 64, etc.);
Para representar um número sinalizado no sistema de complemento de 2 utilizando uma quantidade maior de bits, deve-se repetir o bit de sinal até completar todas as casas à esquerda;
Prof. Daniel A. Furtado
Decimal Binário (Sist. Comp. 2) Binário com 8 bits (Sist. Comp. 2)
+9 01001 𝟎𝟎𝟎01001
−9 10111 𝟏𝟏𝟏10111
+24 011000 𝟎𝟎011000
−24 101000 𝟏𝟏101000
Sistema de Complemento de 2 – Negação
A negação (inversão do sinal) de um número binário no sistema de complemento pode ser obtida calculando-se o complemento de 2 do número*, seja ele positivo ou negativo;
Para o caso do número 0, o cálculo do complemento de 2 produzirá o próprio número 0 (verificar);
*Exceto para o caso especial que será apresentado a seguir
Prof. Daniel A. Furtado
00001001 (+9)
1 +
11110110
11110111 (-9)
11110111 (-9)
1 +
00001000
00001001(+9)
Encontrando Números Negativos em Comp. de 2: outra forma
Uma alternativa para encontrar a representação de números negativos utilizando N bits é:
1. Representa-se o número positivo com N bits (completando com zeros à esquerda, se necessário; e inserindo o bit de sinal 0);
2. Calcula-se o complemento de dois do número obtido no passo 1 para inverter o seu sinal;
Dessa forma não seria necessária a extensão do bit de sinal, uma vez que o número calculado já ocuparia todos os bits;
Prof. Daniel A. Furtado
Encontrando Números Negativos em Comp. de 2: outra forma
Prof. Daniel A. Furtado
Exemplo. Encontrar o número binário no sistema de complemento de 2 correspondente ao decimal -24 utilizando 8 bits.
1. Encontrar o número +24 utilizando 8 bits
2. Calcular o complemento de 2 desse número já utilizando a
quantidade especificada de bits:
𝟎0011000
𝟎0011000 𝟏1100111
𝟏1100111 1 +
𝟏1101000 Complemento de 1
Complemento de 2
-24, com 8 bits
Sistema de Complemento de 2 – Caso Especial
Considerando uma quantidade de bits N qualquer, observa-se que o número começando com 1 seguido de N-1 zeros nunca é produzido pelo cálculo do complemento de 2;
Tal combinação de bits é utilizada para representar o menor número negativo que se pode ter no sistema de complemento de 2 com N bits;
Considerando 4 bits, por exemplo, este número equivale ao decimal −8, representado no sistema de comp. de 2 por 1000.
Prof. Daniel A. Furtado
Faixa de Valores Possíveis
Com N bits, no sistema de complemento de 2, é possível representar os números inteiros do intervalo:
De −2𝑛−1 a 2𝑛−1 − 1
Observe que o “-1” presente no expoente é justificado pelo fato de termos um bit a menos para representação da magnitude (devido ao bit de sinal)
Repare também que, devido ao caso especial, haverá sempre um número negativo a mais;
Prof. Daniel A. Furtado
Exercícios
Represente os seguintes números em binário utilizando o sistema de complemento de 2 com 8 bits:
Represente os seguintes números em binário utilizando o sistema de complemento de 2 com 5 bits:
• -1
• +3 Qual é a faixa de valores que se pode representar utilizando
10 bits no sistema de complemento de 2?
Qual é o menor número que pode ser representado com 32 bits no sistema de complemento de 2? (em potência de 2)
Prof. Daniel A. Furtado
+10 -18
+39 -4
Adição no Sistema de Complemento de 2
No sistema de complemento de 2, a adição pode ser facilmente realizada em dois passos, independentemente dos números envolvidos serem positivos ou negativos:
1. Represente os números a serem somados no sist. de comp. utilizando a quantidade desejada de bits;
2. Faça a soma convencional dos números, desprezando o último carry (vai um), se houver.
Prof. Daniel A. Furtado
Exemplo 1: Calcular 𝟐𝟓 + 𝟐𝟓 utilizando 8 bits
1. Representar os números no sist. de comp. de 2 com 8 bits • 2510 = 00011001 (sist. comp. de 2 com 8 bits)
2. Realizar a soma
Prof. Daniel A. Furtado
00011001 (+2510)
00110010 (+5010)
+
00011001 (+2510)
Exemplo 2: Calcular −𝟕 + 𝟐𝟓 utilizando 8 bits
1. Representar os números no sist. de comp. de 2 com 8 bits • −710 = 11111001 (sist. comp. de 2 com 8 bits)
• 2510 = 00011001 (sist. comp. de 2 com 8 bits)
2. Realizar a soma
Prof. Daniel A. Furtado
00011001 (+2510)
00010010 (+1810)
+
11111001 (−710)
Descartar 1 1 1 1 1 1
Subtração no Sistema de Complemento de 2
No sistema de complemento de 2, a subtração pode ser facilmente realizada em três passos:
1. Representar o minuendo e o subtraendo no sist. comp. 2;
2. Negar o subtraendo (calculando o seu comp. de 2);
3. Somar o minuendo com o subtraendo negado, desprezando o último carry, se houver;
Prof. Daniel A. Furtado
Exemplo: Calcular 𝟐𝟓 − 𝟏𝟒 utilizando 8 bits
1. Representar os números no sist. de comp. de 2 com 8 bits • 2510 = 00011001 (sist. comp. de 2 com 8 bits)
• 1410 = 00001110 (sist. comp. de 2 com 8 bits)
2. Negar o subtraendo
3. Somar o minuendo (25) com a negação do subtraendo e desprezar o último carry, se houver
Prof. Daniel A. Furtado
00001110 11110001
11110001 1 +
11110010 (Comp. de 1) (Comp. de 2) (-14)
11110010 (−1410)
00001011 (1110)
+
00011001 (2510) 1 1 1 1 Descartar
Resultado da subtração
Verificando se Ocorreu Overflow
Ao realizar operações aritméticas com números binários utilizando uma quantidade predeterminada de bits, é possível que o resultado da operação não “caiba” nesse espaço de bits;
Nesses casos, dizemos que ocorreu um overflow na operação, o que torna o resultado inválido;
Por exemplo, um overflow ocorrerá ao efetuar a soma dos números 10010 e 8010 utilizando uma representação binária no sistema de comp. de 2 com 8 bits, pois o resultado da operação (18010) não pode ser representado com 8 bits nesse sistema;
Prof. Daniel A. Furtado
Verificando se Ocorreu Overflow
Como saber se um overflow ocorreu durante uma operação de soma ou subtração no sistema de complemento de 2 analisando apenas a operação em si?
• É importante saber que o overflow poderá ocorrer apenas quando a soma final dos operandos (seja na adição ou na subtração) envolver dois números de mesmo sinal (dois positivos ou dois negativos);
• Se isto acontecer, então o bit de sinal do resultado deve ser verificado. Caso esse bit seja diferente do bit de sinal dos operandos, então ocorreu um overflow (caso contrário, o resultado é válido);
Prof. Daniel A. Furtado
Exemplo 1: Calcular 𝟏𝟎𝟎 + 𝟖𝟎 utilizando 8 bits
1. Representar os números no sist. de comp. de 2 com 8 bits • 10010 = 01100100 (sist. comp. de 2 com 8 bits)
• 8010 = 01010000 (sist. comp. de 2 com 8 bits)
2. Realizar a soma
Prof. Daniel A. Furtado
01010000 (8010)
𝟏0110100 (−7610)
+
01100100 (10010) 1 Operandos de mesmo
sinal (positivo)
O sinal do resultado é diferente do sinal dos operandos. Logo, ocorreu overflow e o resultado é inválido.
Exemplo 2: Calcular −𝟒𝟎 − 𝟗𝟎 utilizando 8 bits
1. Representar os números no sist. de comp. de 2 com 8 bits • −4010= 11011000 (sist. comp. de 2 com 8 bits)
• −9010 = 10100110 (sist. comp. de 2 com 8 bits)
2. Realizar a soma
Prof. Daniel A. Furtado
10100110 (−9010)
𝟎1111110 (+12610)
+
11011000 (−4010) 1 Operandos de mesmo
sinal (negativo)
O sinal do resultado é diferente do sinal dos operandos. Logo, ocorreu overflow e o resultado é inválido.
OBS: Vale destacar que a geração de um carry na soma dos últimos bits não indica, por si só, um overflow. (Ex.: reveja a operação “25 – 14”)
Exemplo 3: Calcular 𝟐𝟓 + 𝟐𝟓 utilizando 8 bits
1. Representar os números no sist. de comp. de 2 com 8 bits • 2510 = 00011001 (sist. comp. de 2 com 8 bits)
2. Realizar a soma
Prof. Daniel A. Furtado
00011001 (+2510)
𝟎0110010 (+5010)
+
00011001 (+2510) Operandos de mesmo sinal (positivo)
O sinal do resultado é igual ao sinal dos operandos. Logo, não ocorreu overflow e o resultado é válido.
Adição em Hexadecimal
Prof. Daniel A. Furtado
2 3 C (57210)
𝟓 𝐄 𝐁 (151510)
+
3 A F (94310) 1
2710 − 1610 = 1110 = B16
Carry (“vai um”)
𝐹 + 𝐶 = 1510 + 1210
= 2710 (maior que 15)
Exercícios Os binários a seguir representam números no sistema de
complemento de 2. Encontre os números decimais correspondentes. • 11110110 • 01110 • 111101 • 1011011011
Realizar as seguintes operações em binário utilizando o sistema de complemento de 2 com 8 bits • 30 – 10 • -98 + 10 • 56 + 94 • -70 – 50
Somar diretamente os números hexadecimais DE81 e 1FA9
Prof. Daniel A. Furtado
Referências
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas Digitais: princípios e aplicações. 11.ed. São Paulo: Pearson Prentice Hall, 2011.
• Leitura recomendada: Cap. 6: págs 253-268
CAPUANO, F. G.; IDOETA, I. V. Elementos de Eletrônica Digital. 40.ed. São Paulo: Érica, 2008.
Prof. Daniel A. Furtado