Full Adder
To understand the full adder, you have to understand a half adder
See the half adder allows one to add two one bit numbers.
Thus you can do
0+0=0
1+0=1
0+1=1
1+1=? - This is the important line, in the decimal number system 1+1=2. However in binary 2 is 10 ... thats two numbers and you only have 1 sum out.
So what happens
consider 01 +01=10
Its analogous to adding 5+5=10 ... What happens, the one is carried across one space, when something needs to be carried we call this the cary out
so for a half adder we now have
A B | Sum | Carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Of course now Sum looks like A XOR B and Carry Looks like A and B .. which is what we want
So wow thats all and good
But then what is a full adder?
Well... what happens if you wanted to add a 3 bit binary number
say 011 + 011
011 +
011
-----
Now computers like ppl will start by adding up the least significant numbers. So we start at the rightmost side and we find 1+1. Thats ok you say, we can do it with a half Adder... and indeed we can
As seen above you get 1+1=10
Or sum=0 Carry Out=1
but what happens now? we move left and try adding up the middle numbers. The two middle numbers are 1 and 1 .. if we added them using a half adder we would again get 10. But thats not right, what happened to that carry out from the first equation? What happens is that the carry out must be added to our current column so it becomes 1 +1 +1 =11. But from the truth table of the half adder, you can see that you only have 2 inputs. That is why you need a full adder, to take into account the possibilty that the numbers you are adding have a carry in.
So Truth Table for Full adder looks like
Cin A B | Sum | Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
As you can see the truth table takes into account the posibility that not only must you add the two numbers but also there is an additional carry-in