素直に「リプルキャリー」で1ビットハーフアダー(1ビット入力*2、
1ビット出力*1とキャリー出力)を作ると、
A+B=A or B, Cy=A and B
1ビットフルアダーは(1ビット入力*2、キャリー入力*1、
1ビット出力*1、キャリー出力)は、
A+B+Cy=A xor B xor Cy
Cy=(A and B) or (B and Cy) or (Cy and A)
=(A and (B or Cy)) or (B and Cy)
これをビット数だけ繰り返せばよいわけだが。