Em um somador de bits, por que é necessário um somador completo (full-adder) em vez de apenas um meio-somador (halfadder)?

Passo 1

O enunciado pergunta por que, ao construir um somador de vários bits em série, não basta usar meio-somadores (half-adders) mas sim precisamos de somadores completos (full-adders). O conteúdo aqui é adição binária e propagação de carry, e para resolver vamos revisar como cada circuito trata o bit de carry que vem da etapa anterior.

Passo 2

Um meio-somador recebe apenas dois bits de entrada, digamos A e B. Ele gera
S = A oplus B
e
Cout = A cdot B,
ou seja, calcula a soma sem levar em conta nenhum carry que venha de uma posição menos significativa.

Passo 3

Em uma adição de dois números binários multi-bit, cada bit de peso mais alto deve levar em conta o carry gerado pela soma dos bits de peso mais baixo. Assim, ao somar o bit i, precisamos dos sinais
Ai, Bi,e o carry in Ci-1
Um half-adder não recebeu nenhum Ci-1, então não sabe se deve incrementar o resultado quando já havia um carry vindo da posição anterior.

Passo 4

Se tentássemos encadear half-adders, a entrada de carry de cada estágio ficaria perdida: o half-adder do bit i veria apenas Ai e Bi e ignoraria qualquer Ci-1. Isso leva a resultados incorretos sempre que houver um carry para propagar.

Passo 5

O full-adder resolve isso incluindo explicitamente o carry in como terceira entrada. Ele tem
S = A oplus B oplus Cin,
Cout = (Acdot B) + (Cincdot (Aoplus B))
Assim ele soma corretamente três bits e gera o carry para a próxima etapa.

Resposta

Porque na adição de vários bits é preciso incluir o carry que vem da posição anterior. O half-adder só soma dois bits e ignora qualquer carry-in, então não permite propagar erros de carry em somadores multi-bit. O full-adder adiciona três bits ( A, B e o carry-in) e gera o carry-out corretamente, garantindo que toda a cadeia de bits some certinho.

Exercícios relacionados