sistemas digitais módulo 2 - daniel.prof.ufu.br · sistemas digitais módulo 2 representações...

36
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

Upload: builiem

Post on 20-Nov-2018

217 views

Category:

Documents


0 download

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

Sistema de Complemento de 2 – Caso Especial

Prof. Daniel A. Furtado

Caso Especial

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