// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/2/FullAdder.hdl
/**
 * Computes the sum of three bits.
 */
CHIP FullAdder {
    IN a, b, c;  // 1-bit inputs
    OUT sum,     // Right bit of a + b + c
        carry;   // Left bit of a + b + c

    PARTS:

    // 1st half adder
    HalfAdder(a=a , b=b , sum=abSum , carry=abCarry);
    // 2nd half adder
    HalfAdder(a=abSum , b=c , sum=sum , carry=abSumCCarry);
    // Carry Or
    Or(a= abCarry, b=abSumCCarry , out=carry );

}