정보통신기사 필기

➕ 가산기 / 감산기 (1·5과목)

한 줄 요약 — 반가산기 = XOR + AND(자리올림 입력 없음) · 전가산기 = 반가산기 2개 + OR 1개(자리올림 입력 있음) · n비트 병렬가산기 = 전가산기 n개. 뺄셈은 별도 회로 없이 2의 보수를 더해서 처리한다.
🔀 반가산기 vs 전가산기 — 인터랙티브
입력 비트를 눌러 바꿔보세요.
반가산기 (Half Adder)
S = A ⊕ B
C = A · B
Cin 은 받지 못한다
전가산기 (Full Adder)
S = A ⊕ B ⊕ Cin
Cout = A·B + Cin·(A ⊕ B)
아랫자리 자리올림까지 3비트를 더한다
📊 전가산기 진리표 — 현재 입력이 강조됩니다
ABCin 합 S자리올림 Cout십진
합 S 는 1의 개수가 홀수일 때 1 — XOR 세 개를 이은 것과 같다(홀수 패리티와 동일한 원리). 자리올림 Cout 은 1이 2개 이상일 때 1 — 다수결(과반수) 회로다.
🔧 전가산기 = 반가산기 2개 + OR 1개
A ──┐ ┌── HA1.S ──┐ │ ┌───────────┐ │ │ ┌───────────┐ ├─▶│ HA 1 │───┘ ├─▶│ HA 2 │──▶ S (최종 합) B ──┘ └───────────┘ │ └───────────┘ │ HA1.C C_in ───┘ │ HA2.C │ │ └──────────▶ ( OR ) ◀─────────────┘ │ ▼ C_out (최종 자리올림)
⚠ 개수 문제로 자주 나온다
· 전가산기 1개 = 반가산기 2개 + OR 게이트 1개
· 전가산기를 게이트로 풀면 XOR 2개 + AND 2개 + OR 1개
· n비트 병렬가산기 = 전가산기 n개 (최하위 자리는 자리올림 입력이 없어 반가산기로 대체 가능)
➖ 반감산기 / 전감산기
회로논리식비고
반감산기
Half Subtractor
D = A ⊕ B
Bout = A' · B
차(Difference)는 가산기와 똑같이 XOR.
빌림(Borrow)만 A 를 반전해서 AND
전감산기
Full Subtractor
D = A ⊕ B ⊕ Bin
Bout = A'·B + Bin·(A ⊕ B)'
반감산기 2개 + OR 1개
가산기와 감산기의 차이는 딱 한 글자 — 합/차는 둘 다 XOR 로 같다. 자리올림은 A·B, 빌림은 A'·B — A 에 부정이 붙느냐만 다르다.
🔁 보수를 이용한 뺄셈 — 감산기가 따로 없는 이유
A − B = A + (B 의 2의 보수)
실제 컴퓨터는 감산 회로를 따로 두지 않고, 가산기 하나로 덧셈과 뺄셈을 모두 처리한다. 각 비트에 XOR 게이트를 달고 제어선 M 을 두면 M=0 → 덧셈, M=1 → 뺄셈이 된다 (M=1 이면 B 가 반전되고 최하위 자리올림에 1 이 들어가 자동으로 2의 보수가 만들어진다).
1의 보수 = 모든 비트 반전 예) B = 0101 2의 보수 = 1의 보수 + 1 1의 보수 → 1010 2의 보수 → 1011 1001 − 0101 → 1001 + 1011 = 10100 └ 올림 1 은 버린다 → 결과 0100 (= 9 − 5 = 4)
🧮 4비트 병렬가산기 (리플 캐리) — 직접 계산
0 과 1 로 최대 4자리
⚠ 리플 캐리의 약점 = 속도
자리올림이 최하위 → 최상위로 순차적으로 전파되므로 비트 수에 비례해 지연이 커진다. 이를 해결한 것이 캐리 예측 가산기(CLA · Carry Look-ahead Adder) — 각 자리의 자리올림을 미리 병렬로 계산해 속도를 높인다. 고속 가산기 = CLA
🔢 BCD 가산기 — +6(0110) 보정
BCD 는 0~9 만 사용하므로 4비트 합이 9를 넘거나(1010~1111) 자리올림이 생기면 그대로 쓸 수 없다. 이때 0110(6) 을 더해 보정하고 자리올림을 윗자리로 넘긴다.
BCD 7 + 5 0111 (7) + 0101 (5) ─────── 1100 ← 12 = 9 초과 → 보정 필요 + 0110 ← +6 ─────── 1 0010 → 자리올림 1, 결과 0010 → BCD 로 12 ✔
📋 조합 논리회로 속 가산기의 위치
회로입력 → 출력구성 / 특징
반가산기2비트 → 합 S, 자리올림 CXOR 1 + AND 1
전가산기3비트(A·B·Cin) → S, Cout반가산기 2 + OR 1
병렬가산기n비트 + n비트전가산기 n개 직렬 연결(리플 캐리)
CLA 가산기n비트 + n비트자리올림을 병렬 예측 → 고속
BCD 가산기10진 한 자리씩4비트 가산기 + 9 초과 검출 + 6 보정
누산기 Accumulator연산 결과 누적 저장가산기 + 레지스터 (ALU 내부)
🔗 이어지는 단원
📝 시험 포인트
• 반가산기 = XOR + AND → S = A⊕B, C = A·B
• 전가산기 = 반가산기 2개 + OR 1개 (게이트로는 XOR 2 + AND 2 + OR 1)
• S 는 1의 개수가 홀수일 때 1, Cout 은 1이 2개 이상일 때 1
• n비트 병렬가산기 = 전가산기 n개, 최하위는 반가산기로 대체 가능
• 리플 캐리 = 느림 ↔ 캐리 예측(CLA) = 고속
• 반감산기 Borrow = A'·B — 가산기의 A·B 와 A 의 부정 하나만 다르다
• A − B = A + (B의 2의 보수) → 가산기 하나로 덧셈·뺄셈 모두 처리
• 2의 보수 = 1의 보수 + 1, 최상위 올림은 버린다
• BCD 가산기는 합이 9 초과 또는 자리올림 시 +0110 보정
• 누산기(Accumulator) = 연산 결과를 누적 저장하는 ALU 내부 레지스터