본문 바로가기

ELECTRONIC

이진 가산기(Binary Adders), 이진 감산기(Binary Subtractor)

반응형

개요 — 이진 덧셈과 뺄셈의 기본 원리

이진수(Binary number)는 0과 1 두 가지 숫자로만 표현된다.
따라서 연산도 단순하지만, 자리올림(Carry) 또는 자리내림(Borrow)이 발생한다.

A B A+B 결과(Sum) 자리올림(Carry)
0 0 0 0 0
0 1 1 1 0
1 0 1 1 0
1 1 10 0 1

즉,

  • 0+0 → 0
  • 0+1 → 1
  • 1+0 → 1
  • 1+1 → 0 (Carry 1)

이 원리를 회로로 구현한 것이 Binary Adder(이진 가산기) 이다.


Half Adder (반가산기)

가장 기본적인 가산기 구조다.
입력 두 개(A, B)를 받아서, 합(Sum)자리올림(Carry) 를 출력한다.

논리식 :

Sum = A⊕B

(XOR 연산은 서로 다를 때 1, 같을 때 0)

A B Sum Carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

즉, Half Adder는 XOR 게이트와 AND 게이트 두 개로 구성된다.


Full Adder (전가산기)

Half Adder는 자리올림을 입력으로 처리하지 못한다.
그래서 이전 자리에서 올라온 Carry 입력(Cin) 을 포함한 Full Adder 구조가 필요하다.

입력: A, B, Cin
출력: Sum, Cout

논리식 :

Sum = A⊕B⊕Cin

즉, 두 입력의 합뿐 아니라, 이전 자리에서 올라온 자리올림까지 고려한 완전한 덧셈을 수행한다.

A B Cin 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

Full Adder는 보통 Half Adder 두 개 + OR 게이트 하나로 구현된다.


Ripple Carry Adder (리플 캐리 가산기)

Full Adder 여러 개를 직렬로 연결하면 다비트 이진수를 덧셈할 수 있다.
이 구조를 Ripple Carry Adder 라고 한다.

  • 각 자리의 Carry-out이 다음 자리의 Carry-in으로 전달된다.
  • n비트 덧셈을 위해 n개의 Full Adder가 필요하다.

예를 들어, 4비트 가산기라면:
FA0 → FA1 → FA2 → FA3

이렇게 캐리가 순차적으로 전파된다.
하지만 이 구조는 캐리가 전파될 때까지 기다려야 하므로, 속도가 느린 단점이 있다.


Carry Look-Ahead Adder (CLA)

Ripple Carry의 속도 문제를 개선한 것이 Carry Look-Ahead Adder 이다.
이 구조는 캐리 발생 여부를 미리 계산해버린다.

핵심 아이디어 :

  • Generate (G) = A·B → 자리올림이 생성되는 조건
  • Propagate (P) = A ⊕ B → 자리올림이 전달되는 조건

이를 통해 캐리를 병렬적으로 계산할 수 있어 속도가 빠르다.
현대 CPU의 ALU는 대부분 이 구조를 사용한다.


Binary Subtractor (이진 감산기)

이진수 뺄셈도 비슷한 방식으로 수행된다.
하지만 직접 빼는 대신, 보수를 이용한 덧셈 방식으로 계산하는 것이 일반적이다.

(1) 기본 규칙

A B A-B 결과(Diff) 자리내림(Borrow)
0 0 0 0 0
0 1 -1 1 1
1 0 1 1 0
1 1 0 0 0

(2) Half Subtractor (반감산기)

입력 A, B → 출력 Diff, Borrow

Diff=A⊕B

즉, A가 0이고 B가 1일 때 자리내림이 발생한다.


(3) Full Subtractor (전감산기)

이전 자리에서 Borrow가 들어올 수도 있으므로 Full Subtractor 구조를 쓴다.

입력: A, B, Bin
출력: Diff, Bout

Diff=A⊕B⊕Bin
B


(4) Subtractor 구현 방법 – 2의 보수법(Complement Method)

컴퓨터에서는 별도의 감산기를 두지 않고,
뺄셈을 덧셈으로 바꿔서 처리한다.

A−B=A+(B‾)+1

즉,

  1. B의 각 비트를 반전(1의 보수)
  2. 1을 더함 → 2의 보수
  3. 이를 A에 더하면 뺄셈 결과와 동일하다.

이 방식은 하드웨어에서 Adder 회로 하나만으로 덧셈과 뺄셈 모두 처리할 수 있어 효율적이다.


요약 정리

구분 입력 출력 핵심 논리식 주요 구성 게이트
Half Adder A, B Sum, Carry Sum = A⊕B
Carry = AB
XOR, AND
Full Adder A, B, Cin Sum, Cout Sum = A⊕B⊕Cin
Cout = AB + BCin + ACin
XOR, AND, OR
Half Subtractor A, B Diff, Borrow Diff = A⊕B
Borrow = A′B
XOR, AND, NOT
Full Subtractor A, B, Bin Diff, Bout Diff = A⊕B⊕Bin
Bout = A′B + A′Bin + BBin
XOR, AND, OR, NOT

Binary Adder/Subtractor는 디지털 시스템에서 모든 산술연산의 기초다.
덧셈, 뺄셈뿐만 아니라 곱셈, 나눗셈, 비교, 주소 계산 등
모든 연산의 기반 회로로 사용된다.

  • Adder의 종류: Half, Full, Ripple Carry, Carry Lookahead
  • Subtractor의 구현: 보수법(Complement)을 통한 덧셈 변환

즉, 이들은 단순한 논리회로의 조합을 넘어,
현대 컴퓨터의 연산 구조(Arithmetic Unit)를 이해하는 핵심 모델이라 할 수 있다.

반응형