Menu Close

What Is a Full Adder? How Carry-In Makes Binary Addition Work

Posted in Computer Architecture

In the previous lesson, we learned how a half adder can add two binary bits.

 

What Is a Full Adder? How Carry-In Makes Binary Addition Work
A half adder takes two inputs:

A
B

and produces two outputs:

Sum
Carry

Using only two logic gates:

XOR → Sum
AND → Carry

That works perfectly when we are adding only two bits.

But real computers rarely add just one bit.

They add numbers containing many bits:

8-bit
16-bit
32-bit
64-bit

And once several bit positions are involved, a new problem appears.

A bit position may receive a carry from the previous position.

The half adder cannot handle that.

To solve this problem, we need a slightly more powerful circuit:

the full adder.

A full adder adds three one-bit inputs and produces a Sum and Carry-out.

 


1. The Problem with the Half AdderThe Problems of Half Adder

Consider this binary addition:

   11
 + 01
 ----

Start with the rightmost column:

1 + 1 = 10

We write:

0

as the Sum and carry:

1

into the next column.

Now look at the next calculation.

It is not simply:

1 + 0

Instead, we must calculate:

1 + 0 + 1

The third bit is the carry from the previous column.

A half adder has only two inputs:

A
B

So it cannot accept that incoming carry.

This is exactly the problem the full adder solves. Full adders include a third input specifically so carries from less-significant bit positions can participate in the next addition.


2. Three Inputs, Two Outputs

A full adder has three inputs:

A
B
Cin

where:

Cin = Carry-in

It produces two outputs:

S    = Sum
Cout = Carry-out

Conceptually:

          ┌─────────────┐
A ───────►│             │
B ───────►│ FULL ADDER  │────► S
Cin ─────►│             │────► Cout
          └─────────────┘

The circuit calculates:

A + B + Cin

Because all three inputs are single bits, the largest possible calculation is:

1 + 1 + 1 = 3

In binary:

3 = 11

So once again, two output bits are enough:

Cout S

For:

1 + 1 + 1

we get:

Cout = 1
S    = 1

or:

11

A full adder therefore handles values from binary 000 through 111, producing a two-bit result.


3. The Full Adder Truth Table

With three binary inputs, there are:

2 × 2 × 2 = 8

possible input combinations.

The complete truth table is:

A B Cin Sum (S) Carry-out (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

This truth table completely describes the behavior of the full adder.

Now we can examine the two outputs separately.


4. Finding the Sum

Look only at the Sum column:

A B Cin S
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1

Notice something interesting.

The Sum is 1 whenever an odd number of inputs are 1.

That is exactly what chained XOR operations produce.

Therefore:

S = A XOR B XOR Cin

or in Boolean notation:

S = A ⊕ B ⊕ Cin

We can calculate it in two stages:

X = A XOR B
S = X XOR Cin

This observation gives us the first clue about how to build the circuit.


5. Finding the Carry-Out

Now look at Carry-out:

A B Cin Cout
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

Carry-out becomes 1 whenever at least two of the three inputs are 1.

For example:

0 + 1 + 1 = 10

so:

S    = 0
Cout = 1

Likewise:

1 + 1 + 0 = 10

and:

1 + 1 + 1 = 11

both produce a Carry-out.

One common Boolean expression is:

Cout = AB + ACin + BCin

But there is another form that maps very naturally onto the circuit:

Cout = (A AND B)
       OR
       (Cin AND (A XOR B))

This form helps us see how the full adder can be constructed from half adders.


6. Building a Full Adder from Two Half Adders

Here is one of the most important ideas in this lesson.

A full adder does not need to be invented from scratch.

We can build it from components we already understand:

2 Half Adders
+
1 OR Gate

This is a standard way to construct a full adder.

The process happens in two stages.

First Half Adder

The first half adder adds:

A + B

It produces:

X  = A XOR B
C1 = A AND B

So:

A ─────┐
       ├──► HALF ADDER 1 ───► X
B ─────┘                 └──► C1

But we are not finished.

We still have:

Cin

to add.


7. The Second Half Adder

The second half adder takes:

X
Cin

as its two inputs.

Remember:

X = A XOR B

The second half adder now calculates:

X + Cin

It produces:

S  = X XOR Cin
C2 = X AND Cin

Therefore:

S = (A XOR B) XOR Cin

which gives us:

S = A XOR B XOR Cin

This is the final Sum output.

The source circuit follows exactly this arrangement: the Sum output from the first half adder feeds the second half adder together with Cin.


8. Why Do We Need the OR Gate?

We now have two possible carry signals:

C1
C2

The first half adder may produce a carry:

C1 = A AND B

And the second half adder may also produce a carry:

C2 = Cin AND (A XOR B)

Either one means the full addition needs a Carry-out.

So we combine them with an OR gate:

Cout = C1 OR C2

The complete idea is:

two half adders

          ┌───────────────┐
A ───────►│               │
          │ HALF ADDER 1  │───► X ───────┐
B ───────►│               │              │
          └───────────────┘              ▼
                 │               ┌───────────────┐
                 │ C1            │               │
                 │         Cin ─►│ HALF ADDER 2  │───► S
                 │               │               │
                 │               └───────────────┘
                 │                       │
                 │                       │ C2
                 ▼                       ▼
              ┌────────────────────────────┐
              │           OR               │
              └────────────────────────────┘
                           │
                           ▼
                         Cout

So the full adder contains:

2 XOR gates
2 AND gates
1 OR gate

in this straightforward implementation.


9. Walking Through an Example

Suppose:

A   = 1
B   = 0
Cin = 1

We want to calculate:

1 + 0 + 1

which equals:

10

First Half Adder

Calculate:

A XOR B

so:

1 XOR 0 = 1

Therefore:

X = 1

The first carry is:

1 AND 0 = 0

so:

C1 = 0

Second Half Adder

Now add:

X + Cin

or:

1 + 1

The Sum becomes:

1 XOR 1 = 0

and the second carry becomes:

1 AND 1 = 1

Therefore:

S  = 0
C2 = 1

Finally:

Cout = C1 OR C2

so:

0 OR 1 = 1

The final result is:

Cout S
  1  0

or:

10

Exactly what we expected.


10. Half Adder vs. Full Adder

The difference between the two circuits is now clear.

Half Adder

Inputs:

A
B

Outputs:

Sum
Carry

It calculates:

A + B

Full Adder

Inputs:

A
B
Cin

Outputs:

Sum
Cout

It calculates:

A + B + Cin

The key difference is therefore not simply that the full adder contains more gates.

The important difference is:

the full adder can accept a carry from a previous bit position.

That capability makes it useful for multi-bit arithmetic.


11. From One Full Adder to Multi-Bit Addition

Now we can see why the full adder is so important.

Suppose we want to add two 4-bit numbers:

A3 A2 A1 A0
B3 B2 B1 B0

We can use one full adder for each bit position.

Conceptually:

A0 ─┐
B0 ─┼──► FA0 ──Cout──► FA1 ──Cout──► FA2 ──Cout──► FA3
Cin ─┘

More completely:

A0,B0 ─► FA0 ─► S0
            │
            ▼ Carry

A1,B1 ─► FA1 ─► S1
            │
            ▼ Carry

A2,B2 ─► FA2 ─► S2
            │
            ▼ Carry

A3,B3 ─► FA3 ─► S3
            │
            ▼
         Final Carry

The Carry-out from one stage becomes the Carry-in of the next stage.

This arrangement allows several one-bit adders to work together to add complete binary numbers. The reference circuit demonstrates the same idea with a 4-bit adder, where each stage passes its carry into the next more-significant stage.

This is where a tiny logic circuit begins to grow into something much closer to the arithmetic hardware inside a processor.


12. Why the Full Adder Matters

A full adder may look like a very small circuit.

But conceptually, it solves one of the most important problems in binary arithmetic:

how to propagate information from one bit position to another.

A single full adder handles one bit.

Multiple full adders can handle many bits.

This gives us a path from:

Logic Gates
     │
     ▼
Half Adder
     │
     ▼
Full Adder
     │
     ▼
Multi-Bit Adder
     │
     ▼
Computer Arithmetic

We started with individual Boolean operations.

Now those operations are being connected together to perform arithmetic on complete binary numbers.


Conclusion

A full adder is a digital circuit that adds three one-bit inputs:

A
B
Cin

and produces two outputs:

Sum
Cout

The Sum is:

S = A XOR B XOR Cin

The Carry-out can be written as:

Cout = (A AND B)
       OR
       (Cin AND (A XOR B))

A straightforward full adder can be constructed from:

2 Half Adders
+
1 OR Gate

The first half adder adds A and B.

The second half adder adds the first Sum to Cin.

The OR gate combines the two possible carry signals into the final Cout.

The most important improvement over the half adder is the Carry-in input.

Because one full adder can receive a carry from another full adder, these circuits can be connected together to add multi-bit binary numbers.

And that leads directly to our next question:

What happens when we connect several full adders together?

The answer is the ripple-carry adder.

Leave a Reply

Your email address will not be published. Required fields are marked *