논리 게이트를 조합하면 한 자리 이진수 덧셈을 수행하는 반가산기를 만들 수 있습니다. 하지만 반가산기에는 한 가지 한계가 있습니다. 첫 자리를 계산할 때는 두 개의 입력만 고려하면 되지만, 그 다음 자리부터는 이전 자리에서 올라온 올림값(Carry)까지 함께 처리해야 하기 때문입니다.
아래에서 비트를 클릭해 두 자리 이진수 덧셈을 직접 해봅시다. 2의 자리를 계산할 때 올림값이 어떻게 전달되는지 확인할 수 있습니다.
1의 자리 반가산기
2의 자리 전가산기
이처럼 세 개의 입력값(A, B, 그리고 아래 자리에서 올라온 Carry)을 모두 처리할 수 있는 회로를 전가산기(full adder)라고 합니다.
전가산기의 진리표는 다음과 같습니다. 구분을 위해 이전 자리에서 올라온 올림값을 Cin으로, 다음 자리로 넘어가는 올림값을 Cout이라고 합니다.
| Cout | Sum | |||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
복잡해 보이지만 각 행을 이진수 덧셈이라고 생각해봅시다. 예를 들어 마지막 행은 1 + 1 + 1 = 11₂이므로 Sum은 1, Cout은 1이 됩니다.
전가산기는 반가산기와 OR 게이트를 활용해 만들 수 있습니다.
전가산기는 두 비트에 아래 자리에서 올라온 올림까지, 세 비트를 더하는 회로입니다. 하지만 전가산기 하나로는 1비트 덧셈만 가능합니다. 4비트나 8비트처럼 여러 자리 숫자는 어떻게 더할까요? 다음 글에서 전가산기를 이어 붙여봅시다.