UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 10 – Circuitos Aritmeticos Prof. Leonardo Augusto Casillo Somador Binário Funções aritméticas como adição, subtração, podem ser executadas usando números binários. Tais operações são fundamentais na construção de um computador. Os computadores e as calculadores digitais realizam várias operações aritméticas sobre números representados no formato binário Somador Binário A adição de dois números binários é realizada exatamente da mesma forma que a adição de números decimais. A adição de números binários é baseada nas seguintes identidades: ◦ ◦ ◦ ◦ 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 0 com carry de 1 (ou vai-um de 1) Somador Binário Apesar de a existência do bit de carry, observamos que a adição de dois números tem o mesmo resultado da operação lógica: ◦ EXCLUSIVE-OR (XOR). A B F = (AB) 0 0 0 0 1 1 1 0 1 1 1 0 Somador Decimal x Binário 3 4 8 7 6 3 6 1 7 1 1 1 1 1 1 1 0 1 0 0 1 0 1 LSD 1 (9) 1 (15) 0 (24) LSD LSD = Least-significant-digit Não é necessário considerar a adição de mais de dois números binários de uma vez, porque em todos os sistemas digitais o circuito que realiza a adição pode efetuar uma operação apenas com dois números de cada vez. Quando mais de 2 números devem ser somados, os dois primeiros são somados e o resultado é somado com o terceiro número e assim por diante. Representação de Números com Sinal (52)10 1 1 0 1 0 0 (6 bits = 0 a 63 decimal) Magnitude do número (-52)10 1 1 1 0 1 0 Magnitude do número Bit de sinal (-) 0 (7 bits = 31- a + 31 em S&M) Quando o bit de sinal igual a 0 o número é positivo, quando 1 é negativo. Meio Somador Entrada de dados an cn+1 bn FA vai-um sn Soma an bn Sn Cn 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Meio Somador Na forma SDP: ◦ sn = a’n.bn + an.b’n Simplificando: ◦ sn = an bn Cout ◦ cn+1 = an.bn Somador Completo Também chamado: full-adder. O somador completo tem 3 bits de entrada an e bn, utilizados pelos dados, e cn, (Carry In – Cin) utilizado como bit de entrada do vai-um da coluna imediatamente à direita. O circuito produz dois bits de saída, a soma sn e o vai-um de saída (Carry Out) cn+1 . Somador Completo Entrada de dados an cn+1 vai-um an bn Cn sn cn+1 0 0 0 0 0 0 0 1 1 0 cn 0 1 0 1 0 vem-um 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 bn FA sn Soma Somador Completo Na forma SDP: ◦ sn = a’n.bn.c’n + an.b’n.c’n + a’n.b’n.cn + an.bn.cn Simplificando: ◦ sn = (a’n.bn + an.b’n). c’n + (a’n.b’n + an.bn). cn ◦ = (an bn). c’n + (an bn)’. cn x sn = (an bn cn ) x’ x y = x’.y +x.y’ (x y)’ = x.y +x’.y’ Somador Completo Da mesma forma para cn+1 ◦ cn+1 = an.bn.c’n + a’n.bn.cn + an.b’n.cn + an.bn.cn ◦ = an.bn.(c’n + cn) + (a’n.bn + an.bn).cn ◦ = an.bn + (an bn). cn c’ ◦ ou ainda = an.bn + an. cn + bn. cn c a‘b’ 0 a’b 0 0 1 1 0 1 ab ab’ 1 Circuito Somador Completo Circuito Somador Completo cn+1 = an.bn + (an bn). cn sn = (an bn cn ) Somador em Paralelo Supor agora somar palavras de 4 bits ◦ A = a3a2a1a0 ◦ B = b3b2b1b0 Uma unidade somador paralelo produz a soma permitindo que entremos com 2 palavras ao mesmo tempo: Somador em Paralelo a3 FA c4 a2 b3 s3 c3 a1 b2 FA s2 c2 a0 b1 FA s1 c1 b0 FA s0 Cin=0 Somador Completo Somador completo CI Somador paralelo de 4 bits Meio Subtrator Entrada de dados an cn+1 bn FA vai-um sn Subtração an bn Sn Cn 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 ◦ sn = an bn ◦ cn+1 = an’.bn Subtrator Completo Entrada de dados an cn+1 vai-um bn FA cn vem-um sn Subtração ◦ sn = an bn cn ◦ cn+1 = an’.cn + bn.c’n an bn cn sn cn+1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 c’ a‘b’ 0 a’b 1 1 1 0 0 0 ab ab’ c 1 Subtrator A maioria dos computadores modernos usa o sistema de complemento de 2 para representar números negativos e realizar subtrações. As operações de adição e subtração de números com sinal podem ser realizadas usando apenas a operação de adição se usarmos a forma de complemento de 2 para representar números negativos. Subtrator Para realizar operações com números inteiros, são considerados os números em sistemas de ponto fixo. O sistema mais usado para representar números binários com sinal é o sistema de complemento de 2. Antes de saber como é esse sistema, temos que saber determinar o complemento de 1 e o complemento de 2 de um número binário. Forma de Sinal e Magnitude (S&M) O sinal do número é calculado separadamente do seu módulo. O bit de sinal é sempre o bit mais à esquerda do valor (MSB). 1 0 1 1 0 1 - 13 0 0 1 1 0 1 + 13 Forma do Complemento de 1 O complemento de 1 de um número binário é obtido substituindo cada 0 por 1 e cada 1 por 0. Em outras palavras, substitui-se cada bit do número binário pelo seu complemento. 1 0 1 1 0 1 Número binário original 0 1 0 0 1 0 Complemento de 1 Forma de Complemento de 2 O complemento de 2 de um número é obtido tomando-se o complemento de 1 do número e somando-se 1 na posição do bit menos significativo. + 1 0 1 1 0 1 (binário (45)10) 0 1 0 0 1 0 (complemento de 1) 1 (adiciona-se 1) 0 1 0 0 1 1 (Complemento de 2) Forma de Complemento de 2 (com sinal) Se o número for positivo, a magnitude é representada na forma binária direta, e um bit de sinal 0 é colocado em frente ao bit mais significativo (MSB). Se o número for negativo, a magnitude é representada na sua forma do complemento de 2 e um bit de sinal 1 é colocado em frente ao MSB. Forma de Complemento de 2 (com sinal) 0 1 Bit de Sinal (+) 1 0 Bit de Sinal (-) 0 1 1 0 1 = +4510 1 = - 4510 Forma binária direta 1 0 0 1 Complemento de 2 Complemento de 2 Representar cada um dos números decimais com sinal usando um número binário com sinal no sistema de complemento de 2. Usar um total de 5 bits incluindo o bit de sinal. (a) +13 (b) –9 (c) +3 Complemento de 2 (a) +13 Como o número é positivo, a magnitude (13) é representada na forma direta, ou seja, 13 = 11012 Anexando o bit 0 temos: +13 = 01101 Bit de sinal Complemento de 2 (b) - 9 Como o número é negativo, a magnitude (9) tem de ser representada na forma de complemento de 2 910 = 10012 0110 (complemento de 1) + 1 (soma-se 1 ao LSB) 0111 (Complemento de 2) Anexando o bit de sinal 1 temos: - 9 = 10111 Bit de sinal Complemento de 2 (c) +3 O valor decimal 3 pode ser representado em binário usando apenas 2 bits. Entretanto, o enunciado do problema requer uma magnitude de 4 bits precedida de um bit de sinal. Então temos: +310 = 000112 Bit de sinal Negação Negação é a operação de conversão de um número positivo em seu equivalente negativo ou a conversão de um número negativo em seu equivalente positivo. Quando os números binários com sinal estão representados no sistema de complemento de 2, a negação é obtida simplesmente realizando-se a operação de complemento de 2. Iniciar com 01001 = +9 Fazer complemento de 2 (negação) 10111 = -9 Negar Novamente 01001 = +9 Adição no Sistema Complemento de 2 Caso 1: Dois números positivos ◦ Este é feito diretamente. ◦ Ex: Somar +9 com +4 +9 +4 0 0 1001 (1a parcela) 0100 (2a parcela) 0 1101 (Soma = +13) Bits de sinal Adição no Sistema Complemento de 2 Caso 2: Um número positivo e outro número menor e negativo ◦ Lembre-se que –4 será representado na forma de complemento de 2. Então +4 (00100) tem que ser convertido para –4 (11100) ◦ Ex: Somar +9 com -4 +9 -4 1 0 1 1001 (1a parcela) 1100 (2a parcela) 0 0101 (Soma = +5) Bits de sinal Carry desconsiderado Neste caso, o bit de sinal também participa do processo de soma. Na verdade, um carry é gerado na última posição da soma. Esse carry sempre é desconsiderado; logo a soma final é 00101, o equivalente a +5. Adição no Sistema Complemento de 2 Caso 3: Um número positivo e outro número maior e negativo ◦ Ex: Somar -9 com +4 -9 +4 1 0 0111 (1a parcela) 0100 (2a parcela) 1 1011 (Soma = -5) Bits de sinal Carry desconsiderado Neste caso, a soma tem um bit de sinal 1, indicando um número negativo. Como a soma é negativa, está na forma do complemento de 2; logo, os últimos 4 bits, 1011, de fato representam o complemento de 2 da soma. Para obter a magnitude direta da soma, temos de fazer a negação de 11011; o resultado é 00101 = +5. Adição no Sistema Complemento de 2 Caso 4: Dois números negativos ◦ Ex: Somar -9 com -4 -9 -4 1 1 1 0111 (1a parcela) 1100 (2a parcela) 1 0011 (Soma = -13) Bits de sinal Carry desconsiderado O carry novamente é desconsiderado Adição no Sistema Complemento de 2 Caso 5: Números iguais e sinais opostos ◦ Ex: Somar -9 com +9 -9 +9 1 1 0 0111 (1a parcela) 1001 (2a parcela) 0 0000 (Soma = 0) Bits de sinal Carry desconsiderado O carry novamente é desconsiderado Subtração A operação de subtração que usa o sistema de complemento de 2 na verdade envolve a operação de soma e não é diferente dos diversos casos de adição tratados anteriormente. Quando efetuamos a subtração de um número binário (o subtraendo) de um outro número binário (o minuendo) usa-se os seguintes procedimentos: ◦ Faça a operação de negação do subtraendo. Isso mudará o subtraendo para o seu valor equivalente com sinal oposto. ◦ Adicione esse número obtido ao minuendo. O resultado dessa adição representa a diferença entre o subtraendo e o minuendo. Subtração Vamos considerar em que +4 é subtraído de +9. ◦ Minuendo (+9) = 01001 ◦ Subtraendo (+4) = 00100 Faça a negação do subtraendo para obter 11100, que representa –4. Agora some este número ao minuendo. +9 -4 1 0 1 1001 (1a parcela) 1100 (2a parcela) 0 0101 (Soma = +5) Bits de sinal Carry desconsiderado Subtração Vamos considerar em que +9 é subtraído de -4. ◦ Minuendo (-4) = 11100 ◦ Subtraendo (+9) = 01001 Faça a negação do subtraendo (+9) para obter 11100, que representa –4. Agora some este número ao minuendo. -4 -9 1 1 1 1100 (1a parcela) 0111 (2a parcela) 1 0011 (Soma = -13) Bits de sinal Carry desconsiderado Multiplicador A multiplicação binária é definida pelas seguintes regras: ◦ ◦ ◦ ◦ 0x0=0 0x1=0 1x0=0 1x1=1 Analizando as regras acima, podemos perceber que a operação de multiplicação é o mesmo que a operação AND. Multiplicador A tabela da verdade de uma AND ilustra esta relação: A B (AxB) 0 0 0 0 1 0 1 0 0 1 1 1 A B P=AxB Multiplicador Um problema mais prático é a multiplicação de duas palavras de n-bits. Exemplo: a1 x b1 a1b0 p3 a1b1 a0 b1 p2 p1 a0 b0 a0 b0 p0 = a0 x b0 p1 = a0 x b0 + a1 x b0 p2 = a1 x b1 + c2 p3 = c3 p0 O produto de duas palavras de dois bits resulta em um produto com 4 bits. Circuito Lógico (Multiplicador 2x2) a1 a0 b1 bo a1 x b1 a1 x b0 MS a0 x b1 a0 x b0 p0 = a0 x b0 MS p1 = a0 x b0 + a1 x b0 p3 p2 = a1 x b1 + c2 p2 p1 p0 p3 = c3 Multiplicação 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 multiplicando = 910 multiplicador = 1110 Produtos parciais 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 Produtos final = 9910 Multiplicação 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 Primeiro produto parcial Segundo produto parcial Soma dos dois primeiros produtos parciais Terceiro produto parcial 0 1 1 0 1 1 1 0 0 1 Soma dos três primeiros produtos parciais 1 1 0 0 0 1 1 Soma dos quatro primeiros produtos parciais que é igual ao produto final Quarto produto parcial 1 1 0 0 0 1 1 Multiplicador 4x4 Circuito 4x4 Multiplicador Somador Completo