__Full Adders__

As we learned in Computer Science 1, a half adder is a circuit that takes two binary inputs and adds them together to produce a Sum and a Carry. While this circuit can add two bits together, it cannot add larger numbers by itself. Why? Because it does not add the carry from the previous bit. This is where the full adder comes in. A full adder takes three inputs: A, B, and Carry In, and outputs a Sum and a Carry Out.

To visualize what a full adder needs to do, consider the example on the right. The result of the first bit (1+1) is carried over to the next bit, so the next bit needs to add together 1+1 and the last bit's carry, so 1+1+1, which equals 1 and a carry, giving us the final result of 110.

So, how do we add a Carry In to our half adder circuit? Just as two halves make a whole object, two half adders make a full adder. To make a full adder we are going to plug the Sum of the first half adder into the A input of the second half adder. Then we use the B input of the second half adder as the Carry In. Lastly, we get our Carry Out by using an OR gate on the Carry lines from both half adders to see if either generated a Carry.

That's it! We have made a Full Adder that can add three bits together. We will use this circuit in the next section to make a 4 bit Ripple Carry Adder.

__Ripple Carry Adders__

Now that we have a circuit that adds three bits together, we can move on to building a Ripple Carry Adder that will compute bigger binary numbers. The way we are going to build this is simple. You may have noticed that a single Full Adder can compute one digit of a binary equation. So if our equation is four digits long then we are going to need four Full Adders to find the sum of the equation.

If done correctly, there should be a left over Carry In on the right side of the Adder and an extra Carry Out on th left side. The Carry In can be used for incrementing, but it is not always needed. If you do not need it then you can swap the first Full Adder for a Half Adder. The Carry out at the end cannot be included in the Sum because that would make the Sum five digits long. On paper this is fine, but in a circuit a number this large would be too much for the rest of the system to handle. Because of this, we are going to call this bit the OverFlow, as the number is to large to fit in the Adder, thus causing it to overflow. The Overflow bit is an example of a Flag. Flags are used as the condition in conditional statements. We will come back to this bit in a later section.