Digital Logic Tutorial

Binary Full Adder

If you can't see the simulation below, try the Full Adder Simulation on falstad.com

Adding a pair of one digit binary numbers isn't that impressive, but digital logic builds, from the absurdly simple to the massively complex. The trick is to make the simple circuit into a block, or module, that you can use to build more complex circuits. The circuit on this page is set up to be that sort of "stackable" block. It has an Input box and an Output box which define the inputs and outputs of the block. And it has an extra input, Carry In or Ci, which can be used to accept the Carry Output from the prior digit. Basically, that means it can add THREE one digit binary numbers. Just like adding:

 39
+21
---
 60

You add the 9 and the 1, which gives you the 0 and you have to "carry" the 1 over on top of the 3. Then you have to add THREE numbers: 1+3+2=6. In the same way, this more complex adder, allows you to add three binary digits, so you can add in the carry from the previous column. We will see that in the next circuit. For now, just look at how this circuit works. It's pretty complex, huh? It helps to look at the output, and figure out what combination of inputs should turn that output on.

This table shows the output we want for each possible input. It's call a truth table and it really does help when developing a circuit.
A B Ci S Co
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

You could actually just go down the table, and build a circuit by looking for any output that needs to be a 1, then describing a circuit that would only put out a 1 with that exact combination of inputs. For example, the second line of the table, the output for S could be described as: NOT A AND NOT B AND Ci. The next line would be NOT A AND B AND NOT C. Those can be combined into NOT A AND (NOT B AND Ci) OR (B AND NOT C). But really? You just fire up Logic Friday^ and put in the truth table and let it figure out the circuit for you.

Next

Big Binary Adder

See also: