sexta-feira, 21 de janeiro de 2011

Complementos

Complementos



O conceito de complemento é usado quando há necessidade de representação de números negativos no processamento digital. Consideram-se, por exemplo, números binários de 8 dígitos (ou bits) e apenas números inteiros.

Se não há necessidade de números negativos, os 8 bits podem representar, em binário, números de 00000000 a 11111111 (0 a 255 em decimal ou 0 a 28 − 1). Totalizando portanto 256 números.

Um método de indicar números negativos é considerar o bit mais significativo (mais à esquerda) como bit de sinal: 0 indica nulo ou positivo e 1, negativo.

Assim, no conjunto considerado de 8 bits, o maior positivo é 27 − 1 = 127. Com o zero, tem-se agora 127 + 1 = 128 para zero e positivos. Sobram portanto 128 para os negativos e o menor deles deve ser −128.


O complemento de um é uma das formas de se obter o correspondente negativo para um número na convenção de sinais mencionada. É obtido pela simples inversão de todos os dígitos no número, como se a função lógica NÃO fosse aplicada a cada. Exemplo:

Seja o número decimal 45. Em binário de 8 bits: 00101101.

Complemento de 1: 11010010.

Se o complemento indica o negativo do número, a soma de ambos deve ser nula: +45 + (−45) = 0.

Mas o resultado da soma 00101101 + 11010010 é 11111111.

Para obter zero, precisa-se somar 1 e desprezar o dígito "vai um " (Cout). O método foi usado em máquinas mais antigas.


O complemento de dois é obtido pela adição de 1 ao complemento de um. Exemplo para o número 45:

Em binário de 8 bits: 00101101.

Complemento de 1: 11010010.

Adicionando 1, tem-se o complemento de 2: 11010010 + 1 = 11010011.

Se, agora, o número é somado ao seu complemento de dois: 00101101 + 11010011 = 100000000. Esse resultado pode ser considerado zero porque o 1 à esquerda é o "vai um" (Cout) e não mais pertence ao conjunto de 8 bits (é a nona posição na seqüência da direita para a esquerda).

Portanto, o complemento de dois é um método mais consistente e certamente o mais usado nas atuais máquinas digitais.

Obs: para o número zero, a operação com complemento de dois é (00000000) = 11111111 + 1 = 100000000. O resultado, como seria esperado, é também zero, de acordo com o comentário do parágrafo anterior.

quinta-feira, 20 de janeiro de 2011

Circuitos somadores

Circuitos somadores

Circuito semi-somador



É um circuito com entradas para dois dígitos binários, uma saída para a soma deles e uma saída para o dígito "vai um" C. A sua tabela de verdade é dada a seguir.

Tabela 01

X

Y

S

C

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1



É qualificado de "semi" porque não há entrada para o dígito "vai um", ou seja, ele pode apenas iniciar uma soma, mas não pode dar continuação a uma operação anterior. É um arranjo básico para a implementação de somadores completos que serão vistos adiante.

A simplicidade da tabela de verdade permite concluir que a saída de soma é a função OU EXCLUSIVO:



S = X XOR Y

E a saída de "vai um" é a função E:

C = X · Y

A Figura 01 mostra o diagrama lógico do semi-somador e a representação em forma de bloco.Na língua inglesa, o circuito é denominado "half adder".

Somador completo



O semi somador não se presta à soma de números com mais de um dígito. A Figura 01 dá exemplos de soma comum com 4 dígitos. Em (a) de dois números decimais e, em (b), de dois números binários (não há equivalência entre eles). O procedimento é basicamente o mesmo para ambas as bases.

Fig 01

Considera-se (caso b) um somador para cada par de dígitos. Conclui-se que o semi somador só pode ser usado para o par de bits menos significativos (mais à direita). Para cada um dos demais pares, deve existir entrada do "vai um" (Cin), que recebe a saída de "vai um" (Cout) da soma do par anterior.

O circuito da Figura 02 executa a função de somador completo ("full adder" em inglês).


Fig 02


O par de dígitos X e Y é somado por um meio somador e o resultado intermediário S1 é somado com a entrada de "vai um " (Cin) por um segundo semi somador.

A saída de "vai um" (Cout) global do circuito é obtida por um bloco OU que recebe as saídas de "vai um" de ambos os meio somadores. A operação do circuito pode ser confirmada pela tabela de verdade a seguir.

Tabela 01

X

Y

Cin

S1

C1

S

C2

Cout

0

0

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

0

1

0

1

0

0

1

1

0

0

1

0

0

1

0

0

1

0

0

1

0

0

0

1

1

1

0

0

1

1

1

0

1

1

0

0

1

1

1

1

1

0

1

1

0

1



A tabela do semi somador do tópico anterior pode ser usada para obter os valores intermediários (S1, C1 e C2) e o final S. Os valores de Cout podem ser deduzidos pela soma aritmética das entradas X, Y e Cin. Uma vez obtidos esses valores, se analisados em função de C1 e C2, observa-se que correspondem à função OU, o que confirma o circuito apresentado.

Da Tabela 01, pode-se obter a expressão de Cout em função das entradas X, Y e Cin:

Cout = XYCin + XYCin + XYCin + XYCin

A Figura 01 é o diagrama de Karnaugh para essa expressão.


Fig 01


O diagrama permite a simplificação com os três pares formados:

Cout = XY + CinX + YCin

O respectivo circuito é dado na Figura 02.


Fig 02


Para a saída de soma S, o diagrama é dado na Figura 03.


Fig 03



S = X XOR Y XOR Cin

ou, de outra forma,

S = (X XOR Y) XOR Cin


Fig 04


Com essa expressão e o circuito anterior (Figura 02), pode-se montar o diagrama de um somador completo (Figura 04). É um arranjo distinto do somador completo do tópico anterior, mas executa função idêntica.