가산기란 덧셈 연산을 수행하는 논리 회로이며, 디지털 회로이다. 그냥 2진수의 덧셈을 위해 구현한 회로라고 생각하면 쉽다. 그런데 가산기는 반가산기와 전가산기로 나뉜다. 그 차이는, 반가산기는 전가산기의 '이전 단계'라고 생각하면 된다.
반가산기
Sum = A⊕B
Carry = A·B
위 그림에서 A, B는 데이터 값이고 C는 Carry(자리 올림) S는 Sum(합)이다. A+B를 수행했을 때, 결과가 C와 S로 나온다. 예를 들어 보자.
- A=0, B=1 일때, 0+1이므로 합인 S는 1이고 자리 올림은 발생하지 않으므로 C는 0이다.
- A=1, B=1 일때, 1+1=2가 되어 2진수에서 자리올림이 발생한다. 따라서 C는 1이고, S는 0이된다.
- A, B 가 모두 1일 때만 C가 1이되니 AND 게이트로 C를 구현하고
- A, B 가 서로 다를 때만 S가 1이 되니 XOR 게이트로 S를 구현했다.
전가산기
Sum = A⊕B⊕Cin
Cout = A·B+Ci(A⊕B)
위 그림에서 A, B는 데이터 값이고 (Cin=X)는 은 기존의 Carry(자리 올림)을 더해주는 것, (Cout=C)은 자리 올림의 결과이다. S는 Sum(합)이다. A+B+Cin를 수행했을 때, 결과가 S와 Cout으로 나온다. 하위의 자리올림수 출력을 상위의 자리올림수 입력에 연결함으로써 임의의 자리수의 이진수 덧셈이 가능해진다. 하나의 전가산기는 두개의 반가산기와 하나의 OR로 구성된다.
이게 말이 어렵지만.. 십진수의 세계에서 54+29 = 83을 계산할 때, 사실상 4와 9를 먼저 더해서 13을 만든다. 3은 남기고 10은 50+20의 덧셈에 더해주지 않는가? 반가산기의 경우 그냥 3과 10을 분리하여 이해한 것이라면, 전가산기는 다른 자릿수에 올림 덧셈까지 가능하게 해주는 것이다. 이제 쉽죠? 사실상 반가산기는 전가산기를 만들기 위한 도구다.
따라서 A+B+X에서 1의 갯수로 생각하면 편하다..
- A, B, X에서 1의 갯수가 1개면 Sum만 1일 것이고 (2진수에서 1은 01(2))
- A, B, X에서 1의 갯수가 2개면 Carry out만 1일 것이고 (2진수에서 2는 10(2))
- A, B, X에서 1의 갯수가 3개면 Sum과 Carry out 모두가 1일 것이다. (2진수에서 3은 11(2))
참 쉽다. 회로도는 [전가산기 = 반가산기 2개 + OR 게이트] 로 구성되는 것을 기억하면 된다.
'자격증 > 전자계산기조직응용기사' 카테고리의 다른 글
[전자계산기조직응용기사] 필수! 마이크로 연산 (0) | 2021.04.07 |
---|---|
[전자계산기조직응용기사] 필수! 반감산기와 전감산기 (2) | 2021.04.03 |
[전자계산기조직응용기사 실기] 필수! 그레이코드와 2진코드 (0) | 2021.04.01 |
[전자계산기조직응용기사 실기] 필수 주관식 정리 - 1 (0) | 2021.03.31 |
[전자계산기조직응용기사 실기] 필수! 교착상태(Deadlock) (0) | 2021.03.30 |