2010년 10월 5일 화요일

Gates and Circuits 중 어려웠던 것 알아보기!

교수님계 죄송하긴 하지만 솔직히 이번단원은 들으면서 정말 수박 겉핥기 정도로 밖에 이해가 가지 않았다. 뭐 내가 머리가 좋은게 아니니까 굳이 죄송할 필요는 없을거 같다.(자기합리화) 잡소리는 생략하고 이번 단원을 공부하면서 특히 이해가 안갔던 것을 꼽으라면... 아 원래 이해가 안가는 것은 많았지만... 그래도 Adders 부분이 어려웠다. 시험도 2주밖에 안남았고 슬슬 공부도 해야되니 이번 단원은 나름 미리 시험공부할겸 모르는 것을 중점적으로 알아보아야겠다.

1. Adders

우선 Adder의 정의 부터 살펴보자면

2개 이상의 수를 입력으로 하여 이들의 합을 출력으로 하는 논리 회로 또는 장치. 덧셈기라고도 한다.

출처 - 네이버백과사전

이렇다고 한다. 나도 고등교육받아서 이런건 알거든요...? 시덥잔은 정의를 알아보았으니 교재에 나온 Adder의 두 종류중 첫번째인 half-adder에 대해서 알아보겠다.

우선 half-adder은 우리말로 반가산기로서 2개의 이진수 입력값과 1개의 이진수 출력값을 갖는 계산기이다. 다시말하자면 입력값으로 0 또는 1의 수 두개를 받아 그 수들의 합을 한개의 이진수로 나타낸다는 것이다. 이것은 AND(2가지 이상의 전기 신호를 입력받아 모든 입력값에 전기 신호가 들어오면 참(1), 만약 아니라면 거짓(0)을 출력하는 논리회로) ,  XOR(2가지 이상의 전기 신호를 입력받아 모든 입력값에 전기 신호가 들어오거나 들어오지 않는다면 거짓(0), 들어온다면 참(1)을 출력하는 논리회로)  두가지의 논리회로를 이욯해서 만들어진다. 우선 글로만 보면 이해하기가 힘드므로 교재에 있는 논리회로를 인터넷에서 찾아보았다.
(S와 연결된 회로가 XOR회로이고 C와 연결된 회로      는 AND회로이다.)

이 회로를 보자면 A, B는 각각 입력값을 의미하고 S, C는 출력값을 의미한다. 잠깐, 아까 반가산기는 출력값이 하나라고 했는데 왜 그림에서는 2개일까? 다음의 A,B값이 들어옴에 따라 회로들에 의해 출력값이 정해지는 모든 경우를 표로 표현한 것을 보면 그 이유를 알 수가 있다.
A + B = C, S (C는 이진수의 일제곱의 자리 S는 이진수의 영제곱의 자리를 의미한다)
0 +  0  = 0, 0
0 +  1  = 0, 1
1 +  0  = 0, 1
1 +  1  = 1, 0 

만약 논리회로를 조금만 봤더라도 충분히 이해할 수 있는 내용이다. 표를 보면 앞서 말한 것처럼 실재로 A, B의 덧셈의 결과가 C, S를 통해 하나의 출력값으로 표현되는 것을 알 수 있다. 하지만 입력값이 2개 이상이 되면 어떨까? 그런 경우에는 이런 입력값을 2개만 가지는 회로로는 계산을 할 수가 없을 것이다. 그 때문에 생긴 회로가 full-adder이다. 이 회로는 다수의 half-adder를 사용해서 만든 회로로서 입력값이 2개 이상인 경우에도 덧셈을 해서 결과값을 출력할 수 있다. 이번에도 보다 쉽게 이해하기 위해 그림을 찾아보았다. 하지만 반가산기처럼 논리회로를 따라가는게 쉽지 많은 않았다. 그 이유는 아래의 그림을 보면 된다.

아까처럼 만만하지 않다는걸 새삼 다시 느낄수가 있다. 하지만 논리회로 하나하나를 천천히 지나면 결과값을 구하는게 그렇게까지 어려운일은 아님을 알 수 있다. 이 회로 의 X, Y, Z 값은 각각 입력값을 의미하고 S, C는 출력값을 의미한다. 조사를 하면서 한가지 흥미로운 사실을 알게 됬는데, 난 교재에 있는 회로(위의 그림과 같다.)를 X, Y, Z의 입력값들이 다 더해져서 덧셈이 2번 계산되는 줄 알았다. 하지만 Z는 만약 십의 자리 수들의 덧셈일 경우 일의 자리에서 십의 자리에 관여할 수 가 있기 때문에 생기는 입력값이라는 것이다. 가령 예를들어 17 + 13의 경우 십의 자리 숫자끼리만 더한다면 20이지만 일의 자리가 10이 되어 십의 자리에 관여할 수 있다는 말이다. 요약하자면 Z는 X, Y보다 한자리 낮은 숫자에서 올라오는 값이 있는가 없는가에 대한얘기다. 있으면 Z의 입력값은 1, 없다면 0이 된다.  이를 이용해서 표를 만들어보면

X + Y + Z = S, C (S는 이진수의 2의 제곱의 자리 C는 2의 세제곱의 자리를 의미한다.)
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

후 시간을 투자해서 다시 보니 이해를 못할정도로 어렵지는 않았다. 이 기세를 몰아 뒷부분의 헷갈리는 부분도 다시 집고 넘어가야겠다.

댓글 2개:

  1. Lucky Club | LUCKY CLUB
    Lucky Club luckyclub.live offers the most exciting gaming experience around. We offer fast deposits and fast withdrawals, instant play, VIPs, Bitcoin, Ethereum, Blackjack,

    답글삭제