Você está na página 1de 50

ELC 1112 – Circuitos Digitais II

Circuitos Aritméticos digitais

Marcos H. Maruo

marcos.maruo@ufsm.br

Departamento de Eletrônica e Computação


Centro de Tecnologia
Universidade Federal de Santa Maria

2017
Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 1 / 50
Roteiro I

1 Introdução

2 Adição binária

3 Representação de números com sinal

4 Adição no sistema de complemento de 2

5 Subtração no sistema de complemento de 2

6 Multiplicação de números binários

7 Divisão binária

8 Adição BCD

9 Aritmética hexadecimal
Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 2 / 50
Objetivos

Após esta aula o aluno deve ser capaz de de compreender a utilização de


unidades lógico aritméticas e seu contexto dentro da arquitetura de Von
Neumann. O aluno também deve ser capaz de utilizar somadores
integrados em cascata.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 3 / 50


Pré-requisitos

Circuitos combinacionais;

Lógica booleana;

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 4 / 50


Introdução

Computadores modernos realizam operações aritméticas com números


representados no formato binário1 ;

Circuitos aritméticos comerciais podem ser extremamente complexos


e estão fora do escopo da disciplina;

É necessário apenas o conhecimento conceitual dos princı́pios básicos


de como os computadores executam as operações aritméticas básicas.

1
Curioso por que exatamente binário? Dê uma olhada em Shannon, C.E. (1948), “A
Mathematical Theory of Communication”, Bell System Technical Journal, 27, pp.
379–423 & 623–656, July & October, 1948.
Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 5 / 50
Adição binária I

A adição binária é fundamentalmente idêntica à adição de números


decimais. Considere a adição decimal:

3 7 6d
+ 4 6 1d
8 3 7d

A operação inicia no dı́gito menos significativo (LSD, do inglês least


significant digit) em que os LSD’s de cada número são adicionados
(6d + 1d) produzindo uma soma igual a 7d.
A soma continua dos dı́gitos menos significativos para os mais
significativos. Os dı́gitos das dezenas são somados (7d + 6d)
resultando em 13d. Essa operação resulta em um dı́gito 3d
armazenado nas dezenas da soma e a propagação de um carry (vai
um) para a soma das centenas;

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 6 / 50


Adição binária II
Finalmente, a parcela de centenas da soma é produzida adicionando o
carry das dezenas, o dı́gito das centenas do primeiro número e o dı́dito
de centenas do segundo número (1 + 3 + 4) resultando no dı́gito 8d.
Quando a operação de soma é realizada no formato binário, apenas alguns
casos podem ocorrer durante a determinação de um dı́gito

cin A B cout S cin (carry in) indica o carry-out do dı́gito


0 0 0 0 0 anterior e S indica a soma. Se esse é o bit
0 0 1 0 1 menos signtificativo (LSB do inglês least
0 1 0 0 1 signtificant bit), basta projetar um
0 1 1 1 0 meio-somandor em que cin deve ser zero.
1 0 0 0 1 Nesse caso, S = A ⊕ B e cout = A + B;
1 0 1 1 0 Caso contrário, é necessário utilizar a
1 1 0 1 0 álgebra booleana para projetar o somador
1 1 1 1 1 completo que implementa as funções
lógicas correspondentes a S e cout .
Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 7 / 50
Adição binária III

Inicialmente, representando S como uma soma de produtos (sem


simplificação), a função resultante é

S = cin · A · B + cin · A · B + cin · A · B + cin · A · B


= cin · (A · B + ·A · B) + cin · (A · B + A · B)
= cin · A ⊕ B + cin · A ⊕ B
= (cin · A + cin · A) ⊕ B
= cin ⊕ A ⊕ B

Analogamente, para cout ,

cout = cin · A · B + cin · A · B + cin · A · B + cin · A · B


= (cin + cin ) · (A · B) + (cin · (A · B + A · B))
= (A · B) + (cin (·A ⊕ B))

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 8 / 50


Adição binária IV
Essa implementação apresenta um pequeno inconveniente quando o
projeto é realizado pela interconexão de circuitos integrados. Ela requer
três tipos de operações lógicas (AND, OR e XOR). Geralmente, os
circuitos integrados de portas lógicas contém somente um tipo de porta
lógica em seu encapsulamento. Em projetos utilizando FPGA’s,
entretanto, essa implementação é adequada. Alternativamente, é possı́vel
implementar o somador completo utilizando somente dois tipos de funções
lógicas (AND e XOR). O processo é baseado na propriedade associativa da
soma. Se a, b e c são membros de um corpo numérico restrito a somente
um dı́gito então

(a + b) + c = a + b + c

Se c indicar o carry-in da operação, então a + b pode ser computada


utilizando somente um meio-somador resultando em S1 = A ⊕ B e
cout1 = A · B. Para completar a operação, é necessário somar o carry-in

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 9 / 50


Adição binária V

com o resultado de a + b utilizando outro meio-somador resultando em


S2 = S1 + cin e cout2 = S1 · cin . Finalmente, S = S2 e cout = cout1 ⊕ cout2 .
Note que como somente um dos meio-somadores pode produzir um
carry-out no mesmo dı́gito para entradas válidas a operação de soma
dos carry-outs é substituı́da por uma função ou exclusivo. Portanto,

S = S1 ⊕ cin
= (A ⊕ B) ⊕ cin
= A ⊕ B ⊕ cin
cout = cout1 ⊕ cout2
= (A · B) ⊕ (S1 · cin )
= (A · B) ⊕ (cin (·A ⊕ B))

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 10 / 50


Representação de números com sinal I

Em computadores contemporâneos, números binários são representados


por um conjunto de dispositivos de armazenamento binário (os
famigerados flip-flops). Cada flip-flop é capaz de armazenar um bit. Por
exemplo, um registrador com Nb bits é capaz de armazenar valores de 0
até 2Nb − 1. O valor armazenado representa a magnitude do número.
Entretanto, é necessário um sistema mais sofisticado para lidar com
números negativos. Geralmente, isso é realizado adicionando um bit
adicional que indica se o sinal do número é positivo ou negativo. Por
convenção, utiliza-se o bit mais significativo (MSB do inglês most
significant bit) para representar o bit de sinal. Um bit de sinal zero indica
um número não-negativo e um bit um indica um número negativo.
Existem diversas maneiras de representar números com sinais utilizando
essa abordagem.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 11 / 50


Representação de números com sinal II

Sistema sinal-magnitude
Nesse sistema, o bit mais significativo indica o sinal (fase) do número e o
restante dos bits indica a magnitude do número. Para uma representação
binária de um número A com N bits, seu valor no sistema sinal-magnitude

N−2
X
A = (−1)AN−1 Ai 2i
i=0

ln(sign(A))
ou seja sign(A) = (−1)AN−1 , portanto AN−1 = jπ e

N−2
X
|A| = Ai · 2i .
i=0

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 12 / 50


Representação de números com sinal III

Sistema sinal-magnitude – exemplo


Por exemplo, o número A de 7 bits
A6 A5 A4 A3 A2 A1 A0
1 1 0 0 1 1 0
representa, no sistema sinal-magnitude, um número negativo
(sign(A) = (−1)A6 = −1) com magnitude
5
X
|A| = Ak 2k .
i=0

Consultando a tabela, a magnitude do número é |A| = 25 + 22 + 21 = 38.


Portanto,

A = (−1) · 38 = −38d

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 13 / 50


Representação de números com sinal IV

Sistema sinal-magnitude – exemplo


Considere um número B de 5 bits
B4 B3 B2 B1 B0
1 0 0 0 0
Essa sequência de bits representa, no sistema sinal-magnitude, um número
negativo (sign(B) = (−1)B4 = −1) com magnitude
3
X
|B| = Ak 2k .
i=0

Consultando a tabela, a magnitude do número é |B| = 0. Portanto,


B = (−1) · 0 = 0. Duas sequências diferentes são mapeadas para o mesmo
número (Ck = 0, k = 0, . . . , 4 também resulta em C = 0).

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 14 / 50


Representação de números com sinal V

Sistema de complemento de 1
Nesse sistema, o bit mais significativo indica o sinal (fase) do número e o
restante dos bits indica a magnitude do número. Para uma representação
binária de um número A com N bits, seu valor no sistema sinal-magnitude

 N−2
X
Ai · 2i ,




 AN−1 = 0
A= i=0
 N−2
X
− (1 − Ai ) · 2i , AN−1 = 1




i=0

ou seja, quando o número é negativo, sua magnitude é representada em


complemento de 1.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 15 / 50


Representação de números com sinal VI

Sistema de complemento de 1 – exemplo


Por exemplo, o número A de 7 bits
A6 A5 A4 A3 A2 A1 A0
1 1 0 0 1 1 0
representa, no sistema de complemento de um, um número negativo
(sign(A) = (−1)A6 = −1) com magnitude
5
X
|A| = (1 − Ai ) · 2i
i=0
= 2 + 23 + 20 = 25.
4

Portanto,

A = (−1)1 · (24 + 23 + 20 ) = −25d

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 16 / 50


Representação de números com sinal VII

Sistema de complemento de 1 – exemplo


Alternativamente, algumas pessoas preferem obter a magnitude de um
número negativo complementando todos os bits e avaliando a magnitude
como se o número fosse positivo. Portanto,
A6 A5 A4 A3 A2 A1 A0
0 0 1 1 0 0 1
O número representado pela sequência Ak , k = 0, . . . , 6 é positivo
(A6 = 0) e sua magnitude é facilmente avaliada por
5
X
|A| = Ak · 2k = 24 + 23 + 20 = 25
k=0

O raciocı́nio por trás desse artifı́cio é que |A| = | − A| e ao negar todos os


bits de A obtem-se −A.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 17 / 50


Representação de números com sinal VIII

Sistema de complemento de 2
O sistema de complemento de 2 é o padrão na maioria dos processadores
modernos. Isso ocorre devido a possibilidade de efetuar subtrações
utilizando os mesmos circuitos que realizam uma soma. A representação
de números no sistema de complemento de dois é realizada por meio de
Se um número A representado com N bits é maior ou igual a zero,
seu MSB é zero (AN−1 = 0) e o restante de seus bits representa a
magnitude codificada diretamente por
N−2
X
|A| = Ak · 2k
k=0

Se um número A representado com N bits é negativo, sua


representação é o complemento de 2 de −A.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 18 / 50


Representação de números com sinal IX

Sistema de complemento de 2 –cont


Considere que deseja-se representar o número A = 42d com 7 bits. Esse
número é positivo portanto A6 = 0. Os bits seguintes podem ser obtidos
da maneira tradicional
 
A
Ak = k mod 2
2
 
A0 = A mod 2 = 0 A
A4 = mod 2 = 0
 
A 16
A1 = mod 2 = 1  
A
2 A = mod 2 = 1
5
 
A 32
A2 = mod 2 = 0
4 A = 0101010b
 
A
A3 = mod 2 = 1
8

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 19 / 50


Representação de números com sinal X

Sistema de complemento de 2 –cont


Considere que deseja-se representar o número A = −42d com 7 bits. Uma
das maneiras de determinar a representação de A no sistema de
complemento de 2 é complementar todos os bits de −A e somar um ao
resultado. Portanto, B = 42d = 0101010b.
B6 B5 B4 B3 B2 B1 B0
0 1 0 1 0 1 0
Inicialmente, complementa-se todos seus dı́gitos
B6 B5 B4 B3 B2 B1 B0
1 0 1 0 1 0 1
Finalmente, adociona-se 1 ao resultado
A6 A5 A4 A3 A2 A1 A0
1 0 1 0 1 1 0

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 20 / 50


Representação de números com sinal XI

Sistema de complemento de 2 – cont


Alternativamente, é possı́vel utilizar um algoritmo simples para a
determinação da representação de um número negativo A a partir de seu
inverso aditivo −A. Considere que deseja-se representar o número −28d
utilizando 6 bits. O número 28d = 16d + 8d + 4d = 011100b. Para
determinar o número original procede-se com o algoritmo
A partir da direita, encontre o primeiro ’1’;
Inverta todos os bits à esquerda deste um.
Seguindo esse algoritmo, a partir de 011100b o resultado é
−28d = 100100b.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 21 / 50


Adição no sistema de complemento de 2 I

Conforme mencionado na representação de números pelo sistema de


complemento de 2, é possı́vel utilizar os mesmos circuitos lógicos
utilizados na soma para realizar a subtração. Para isso, é necessário aplicar
a operação de soma aos bits de sinal de cada operando. Cada caso
particular será abordado individualmente
Dois números positivos. A adição de dois números positivos é
realizada diretamente.
Considere a soma de dois números de 5 bits A = 6d e B = 7d.
Inicialmente determina-se suas representações no sistema de
complemento de 2:

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 22 / 50


Adição no sistema de complemento de 2 II

   
6 7
A0 = mod 2 = 0 B0 = mod 2 = 1
1 1
   
6 7
A1 = mod 2 = 1 B1 = mod 2 = 1
2 2
   
6 7
A2 = mod 2 = 1 B2 = mod 2 = 1
4 4
   
6 7
A3 = mod 2 = 0 B3 = mod 2 = 0
8 8
Em seguida, realiza-se a soma binária
+1 +1
0 0 1 1 0
+ 0 0 1 1 1
0 1 1 0 1
em que os bits de sinal estão destacados no retângulo à esquerda.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 23 / 50


Adição no sistema de complemento de 2 III

Um número positivo e um negativo de menor magnitude. Considere


dois números de 5 bits A = −6d e B = 7d e que deseja-se calcular
B + A. Para realizar essa soma, inicialmente é necessário representar
A = −6d no sistema de complemento de 2 dado que 6d = 00110b.
Segundo o algoritmo alternativo, encontra-se o primeiro um a partir
do bit menos significativo e inverte-se os bits mais significativos a
partir dele. Portanto, −6d = 11010b. Procedendo com a soma
+1 +1 +1
0 0 1 1 1
+ 1 1 0 1 0
0 0 0 0 1
em que o carry out do MSB é desprezado.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 24 / 50


Adição no sistema de complemento de 2 IV

Um número positivo e um negativo de maior magnitude. Considere


dois números de 5 bits A = 6d e B = −7d e que deseja-se calcular
A + B. Para realizar essa soma, inicialmente é necessário representar
B = −7d no sistema de complemento de 2 dado que 7d = 00111b.
Segundo o algoritmo alternativo, encontra-se o primeiro um a partir
do bit menos significativo e inverte-se os bits mais significativos a
partir dele. Portanto, −7d = 11001b. Procedendo com a soma
0 0 1 1 0
+ 1 1 0 0 1
1 1 1 1 1
que corresponde a −1d.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 25 / 50


Adição no sistema de complemento de 2 V

Dois números negativos. Considere dois números de 5 bits A = −6d e


B = −7d e que deseja-se calcular A + B. Nos exemplos anteriores
determinou-se que −7d = 11001b e −6d = 11010b. Procedendo com
a soma
+1
1 1 0 1 0
+ 1 1 0 0 1
1 0 0 1 1
em que o carry out do MSB é desprezado. O resultado da soma,
convertido para a base decimal, é −13d.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 26 / 50


Adição no sistema de complemento de 2 VI

Adição de um número positivo e um negativo de igual magnitude.


Considere dois números de 5 bits A = −6d e B = 6d e que deseja-se
calcular A + B. Nos exemplos anteriores determinou-se que
6d = 00110b e −6d = 11010b. Procedendo com a soma
+1 +1 +1
1 1 0 1 0
+ 0 0 1 1 0
0 0 0 0 0
em que o carry out do MSB é desprezado. O resultado da soma,
convertido para a base decimal, é 0d.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 27 / 50


Subtração no sistema de complemento de 2 I

A operação de subtração apresenta dois argumentos: um minuendo A e


um subtraendo B. Para utilizar um circuito somador para realizar essa
operação, basta notar que

A − B = A + (−B)

ou seja, basta “trocar” o sinal do subtraendo e realizar uma soma.


Supondo que o registrador do subtraendo é constituı́do de um contador
utilizando flip-flops JK, são necessários dois ciclos do sinal de relógio para
a preparação do argumento. No primeiro ciclo, todas as entradas J e K
são setadas para nı́vel alto realizando o complemento de um do conteúdo
do contador. No segundo ciclo, o contador deve realizar um incremento do
seu conteúdo. O resultado é a inversão do sinal do subtraendo.
Finalmente, o conteúdo de ambos os registradores é utilizado como
entradas de um circuito somador.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 28 / 50


Subtração no sistema de complemento de 2 II

Exemplo – 112 − 133


Considere que A = 112d e B = 133d e que é necessário computar A − B.
Inicialmente determinam-se as representações dos operandos na base 2
 
112
A0 = mod 2 = 0  
1 112
  A5 = mod 2 = 1
112 32
A1 = mod 2 = 0  
2 112
  A6 = mod 2 = 1
112 64
A2 = mod 2 = 0  
4 112
  A7 = mod 2 = 0
112 128
A3 = mod 2 = 0
8 ln(sign(112))
  A8 = =0
112 jπ
A4 = mod 2 = 1
16

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 29 / 50


Subtração no sistema de complemento de 2 III

Exemplo – 112 − 133 – cont


Procedendo da mesma maneira para determinar a representação binária de
B
 
133
B0 = mod 2 = 1  
1 133
  B5 = mod 2 = 0
133 32
B1 = mod 2 = 0  
2 133
  B6 = mod 2 = 0
133 64
B2 = mod 2 = 1  
4 133
  B7 = mod 2 = 1
133 128
B3 = mod 2 = 0
8 ln(sign(133))
  B8 = =0
133 jπ
B4 = mod 2 = 0
16

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 30 / 50


Subtração no sistema de complemento de 2 IV

Exemplo – 112 − 133 – cont


Em seguida, é necessário obter o neutro aditivo de 133d invertendo seus
bits e incrementando o resultado
not 0 1 0 0 0 0 1 0 1
1 0 1 1 1 1 0 1 0
+ 0 0 0 0 0 0 0 0 1
-133d= 1 0 1 1 1 1 0 1 1b
Finalmente, executa-se a soma de 112d e −133d
+1 +1 +1
0 0 1 1 1 0 0 0 0
+ 1 0 1 1 1 1 0 1 1
1 1 1 1 0 1 0 1 1
que resulta em −21d

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 31 / 50


Overflow aritmético I

Nos exemplos anteriores tomou-se o cuidado de especificar um número de


bits suficiente para conter tanto os operandos quanto os resultados.
Contudo, é necessário conhecer o comportamento de circuitos digitais
quando essa precaução não é tomada.
Exemplo – soma com overflow
Considere que um circuito digital somador de 8 bits recebe como
argumentos os números A = 120d e B = 70d. Decompondo os operandos
em uma série de potências de 2 resulta em A = 64 + 32 + 16 + 8 e
B = 64 + 4 + 2. Portanto, A = 01111000b, B = 01000110b e sua soma é
+1
0 1 1 1 1 0 0 0
+ 0 1 0 0 0 1 1 0
1 0 1 1 1 1 1 0
que corresponde ao número negativo −66d.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 32 / 50


Overflow aritmético II

Exemplo – subtração com underflow


Considere que um circuito digital somador de 8 bits é utilizado para
subtrair B = 10d de A = −120. Do exemplo anterior, 120d = 01111000b
logo −120d = 10001000b. Analogamente, se 10d = 8 + 2 então
10d = 00001010b e −10d = 11110110b. Procedendo com a soma de
−120d com −10d

1 0 0 0 1 0 0 0
+ 1 1 1 1 0 1 1 0
0 1 1 1 1 1 1 0
em que o carry-out dos bits de sinal foi desprezado. Esse resultado
corresponde ao número 126d.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 33 / 50


Overflow aritmético III
Deteção de over(under)flow no somador
Considere dois números A, B ∈ N. Para quaisquer números naturais é fácil
verificar que

A, B ≤ max(A, B) < A + B.

Durante um overflow, é exatamente essa propriedade que é violada.


Analogamente, para C , D ∈ Z∗− também é fácil verificar que

C , D > C + D.

E, durante um underflow, é exatamente essa propriedade que é violada.


Sejam E e F os bits de sinal dos operandos do somador e G indica o bit
de sinal do resultado da soma, um overflow ou underflow ocorre se ambos
os operandos tem o mesmo sinal e o sinal do resultado é diferente do dos
operandos.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 34 / 50


Overflow aritmético IV

Deteção de over(under)flow no somador


Enumerando os possı́veis bits de sinais dos operandos e do resultado,
determina-se a tabela verdade
Para essa tabela, existem duas possibilidades
E F G ovr de detector de overflow
F G
0 0 0 0 F G E
00 01 11 10
00 01 11 10
0 0 1 1 E 0 0 1 0 0
0 1 0 0 0 0 1 0 0
1 0 0 0 1
0 1 1 0 1 0 0 0 1

1 0 0 0
1 0 1 0 ovr = (F + G )
1 1 0 1 ovr = E · F · G
(E + G )
1 1 1 0 +E · F · G
(E + F )

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 35 / 50


Multiplicação de números binários I

A multiplicação de números binários é conceitualmente igual à de números


decimais. Computacionalmente, apesar de requerer mais passos, cada
passo é mais simples pois os dı́gitos multiplicadores podem ser somente
zero (que resulta em uma multiplicação parcial zero) e um (que resulta em
uma replicação do operando). Considerando a conversão de uma
representação binária de dois números positivos A e B de N bits:
N−1
X
A= Ak 2k
k=0
N−1
X
B= Bk 2k
k=0

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 36 / 50


Multiplicação de números binários II

Portanto, seu produto é


N−1
X N−1
X
A·B = Ak 2k B` 2`
k=0 `=0
N−1
X N−1
X
= Ak · B` 2k+`
k=0 `=0

Ou seja, para cada Ak = 1 na representação de A, a multiplicação


acumula uma réplica de B deslocada de k bits em direção ao MSB.
Exemplo
Considere que deseja-se multiplicar dois números de 4 bits 9d e 11d
utilizando um somador digital. Determine os produtos parciais e o produto
final.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 37 / 50


Multiplicação de números binários III

Inicialmente, é necessário encontrar as representações binárias dos


operandos 9d = 1001b e 11d = 1011b. Para cada bit unitário de 11d, a
soma parcial é a representação binária de 9d deslocada da posição do bit
unitário.
1 0 0 1 9d
× 1 0 1 1 11d
1 0 0 1 9d
1 0 0 1 18d
0 0 0 0 0d
+ 1 0 0 1 72d
1 1 0 0 0 1 1 99d

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 38 / 50


Multiplicação de números binários IV

Multiplicação no sistema de complemento de 2


Infelizmente não é possı́vel utilizar circuitos multiplicadores diretamente
com operandos negativos representados no sistema de complemento de 2.
Nesse caso, é necessário converter ambos os multiplicandos para números
positivos e, se necessário, realizar o complemento de 2 do resultado.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 39 / 50


Divisão binária I

O processo de dividir um número (dividendo) por outro (divisor) é


conceitualmente o mesmo utilizado para a divisão de números decimais.
De fato, durante o processo de determinação do quociente existem
somente duas escolhas de dı́gitos possı́veis.
Exemplo 1
Divisão de 9d = 1001b por 3d = 11b
0 0 1 1
1 1 ) 1 0 0 1
0 1 1
0 0 1 1
1 1
0
resulta em um quociente 11b = 3d e um resto zero.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 40 / 50


Divisão binária II

Exemplo 2
Divisão de 10d = 1010b por 4d = 100b
0 0 1 0
1 0 0 ) 1 0 1 0
1 0 0
0 0 1 0
resulta em um quociente 0010b = 2d e um resto 0010b = 2d.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 41 / 50


Divisão binária III

Divisão envolvendo números negativos


Infelizmente, quando a divisão envolve números inteiros, existe
ambiguidade na decomposição dividendo = quociente · divisor + resto.
Por exemplo: −6d dividido por 4 pode ser decomposto em

−6 = (−1).4 − 2
= (−2).4 + 2

e isso impede que, da mesma forma que a multiplicação, a divisão em


complemento de 2 seja consistente com a divisão convencional. Portanto,
a solução mais simples é converter os operandos para números positivos e
ajustar os sinais do quociente e do resto posteriormente /. Por
convenção, o dividendo e o resto tem o mesmo sinal.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 42 / 50


Adição BCD I

A adição BCD de dois dı́gitos segue regras bem simples:


Realize a soma binária dos dois números. Cada agrupamento de 4
bits representa um número BCD. Após concluı́da a soma é necessário
um processo de correção dos dı́gitos;
Se o resultado da soma de dois dı́gitos é menor ou igual a 9, a soma
se mantém e o carry out é igual a zero.
Se o resultado da soma de dois dı́gitos é maior que 9 ou se a soma
produziu um carry out, a soma é corrigida por meio de uma soma
adicional de 6d e o carry out é igual a um caso a correção produza
um carry out ele é propagado para o dı́gito seguinte.
A propagação desse carry out para o dı́gito imediatamente mais
significativo pode transformar seu resultado em um número maior que
9. Nesse caso é necessária uma nova correção.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 43 / 50


Adição BCD II

Exemplo
Realize a soma de 35d + 42d e converta o resultado para o formato BCD.
Inicialmente, os números são representados no formato BCD

35d = 0011 0101 BCD


42d = 0100 0010 BCD

Em seguida, realiza-se a soma binária


0 0 1 1 0 1 0 1
+ 0 1 0 0 0 0 1 0
0 1 1 1 0 1 1 1
O primeiro conjunto de 4 bits representa o dı́gito 7 e o segundo conjunto
de 4 bits representa o dı́gito 7. Nesse caso não é necessária a correção e o
resultado final é 77 BCD

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 44 / 50


Adição BCD III

Exemplo 2
Realize a soma de 75d + 98d e converta o resultado para o formato BCD.
Inicialmente, os números são representados no formato BCD

75d = 0111 0101 BCD


98d = 1001 1000 BCD

Em seguida, realiza-se a soma binária


+1 +1 +1 +1
0 1 1 1 0 1 0 1
O resultado tem 3 dı́gitos em
+ 1 0 0 1 1 0 0 0
1 0 0 0 0 1 1 0 1
que o terceiro é 13d portanto exige uma correção

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 45 / 50


Adição BCD IV

Exemplo 2
Adicionando 6d ao terceiro dı́gito para realizar a correção
+1 +1
1 0 0 0 0 1 1 0 1
+ 0 0 0 0 0 0 1 1 0
1 0 0 0 1 0 0 1 1
A propagação do carry out incrementou o dı́gito das dezenas mas ele
permaneceu menor que 9 portanto não são necessárias mais correções. O
resultado da soma é 113d

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 46 / 50


Aritmética hexadecimal I

Números hexadecimais são utilizados frequentemente por programadores


de baixo nı́vel e projetistas de hardware, por exemplo na especificação de
endereços de memória. Como toda base numérica de representação de
números inteiros, um número Z positivo pode ser representado por meio
de sua decomposição em
N−1
X
Z= Zi · 16i
i=0

em que Zk ∈ {1, . . . , 15} para k = 0, . . . , N − 1. Por smplicidade de


notação, sı́mbolos de magnitude maior que 9 são representados por letras
do alfabeto de modo que A = 10, . . . , F = 15.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 47 / 50


Aritmética hexadecimal II

Adição
A adição de números na representação hexadecimal é semelhante ã adição
de números na representação decimal exceto que os carry outs são
passados somente quando a soma de um dı́gito excede 15. O livro texto
propõe o seguinte procedimento:
Some os dı́gitos hexadecimais convertidos mentalmente para sua
representação decimal, i.e. A = 10, etc
Se a soma for menor que 16, representar a soma diretamente por
meio de um dı́gito hexadecimal;
do contrário, subtraia 16 do resultado, converta para hexadecimal e
propague um carry out para o dı́gito imediatamente mais significativo.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 48 / 50


Aritmética hexadecimal III

Subtração
Lembrando que um número na representação hexadecimal é simplesmente
uma forma compacta da representação binária, é possı́vel realizar a
conversão do subtraendo para binário, determinar seu complemento de 2,
converter o complemento de 2 para hexadecimal e realizar a soma do
minuendo com o complemento de 2 do subtraendo.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 49 / 50


Aritmética hexadecimal IV

Complemento de 2
Alternativamente, o livro-texto propõe um algoritmo rápido de conversão
da representação hexadecimal para seu complemento de 2. Basta
determinar, dı́gito a dı́gito, qual é o valor de F − Zk . Em seguida, some
um ao resultado.
Considere que deseja-se converter o número 752h para seu complemento
de 2.

Z3 = F − 7 = 8
Z2 = F − 5 = A
Z1 = F − 2 = D

Somando 1 a 8ADh resulta em 8AEh. Portanto, o complemento de 2 de


752h é 8AEh.

Marcos H. Maruo (UFSM) ELC 1112 – Circuitos Digitais II 2017 50 / 50

Você também pode gostar