# Determining the truth table and simplifying logic expressions (full adder)

I've been taking an intro computer architecture class and doing some research of my own, I've found the following exercise: Determine the truth table and simplify the logic expression derived from the following circuit:

After some searching I found out this is a Full Adder, so I started reading up on this and found that the above circuit is basically the go to example to explain Full Adders.

What I don't understand is how one simplifies the resulting expression when there are 2 outputs (S and Cout).

The truth table for a Full Adder is:

Inputs      Outputs
A   B   Cin Cout S
0   0   0   0    0
1   0   0   0    1
0   1   0   0    1
1   1   0   1    0
0   0   1   0    1
1   0   1   1    0
0   1   1   1    0
1   1   1   1    1


I understand the carry logic behind this, but I'd like to understand how exactly should I approach an exercise like this, how to determine the truth table and the logic expression?

It can help to add intermediate states to the truth table; there are a lot of letters from the alphabet you haven't used :-). Name the output of the first XOR gate D and add a D column to the truth table. You may want to have clearly separated "inputs", "intermediate" and "outputs". I separate them with a vertical line, and fill out the combinations for the inputs. You have three of those, that's eight combinations.
Then fill out column D, which takes A and B as inputs. Even if there were 15 more inputs, ignore them; only A and B are relevant. Work gate per gate, divide and conquer. When you've finished column D you can fill out column S in the "outputs" section, because that only depends on D and Cin, and you have those.
Repeat for the outputs of the AND gates: add E and F to the "intermediates" section, and fill them out only looking at the columns which are input for each gate.