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
e
. Ele gera
e
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
, precisamos dos sinais
Um half-adder não recebeu nenhum
, 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
veria apenas
e
e ignoraria qualquer
. 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
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 (
,
e o carry-in) e gera o carry-out corretamente, garantindo que toda a cadeia de bits some certinho.