x0FANSA-hk 님의 블로그
8bit CPU 사전준비) NOT, AND, OR, XOR 게이트 이론편 본문
컴퓨터는 수많은 트랜지스터로 만들어져 있다는 것은 다들 들어본 적 있을 것입니다.
그러나 트랜지스터를 생각해보면 이건 단순히 '전기가 흐르면 흐르고, 전기가 안흐르면 안흐르고' 라는 너무 단순한 도구입니다. 그런 이유로 트랜지스터를 단순하게 전압이 들어오면 1, 아니면 0이라고 생각하면 만들어봤자 그게 그거일거 같습니다.
실제로 저희가 CPU를 다룰때도 트랜지스터 하나하나를 세부적으로 다루는게 아니라 특정 트랜지스터들과 그 주변회로를 엮어서 기능별로 호칭을 합니다. 이런것들 중 가장 작은 단위를 논리게이트, 논리게이트로 무언가 구체적인 기능을 하게 만든 회로를 디지털회로 라고 부릅니다. 마치 레고 블럭(논리게이트) 하나를 플라스틱(트랜지스터)들로 만들고, 그 블록들로 집이나 차(디지털회로)를 만드는 것처럼 말이죠.
이중에서 오늘 저희는 기본적인 논리게이트인 NOT, AND, OR, XOR 이렇게 4가지를 다뤄 볼 것입니다. 물론 이것 외에도 여러가지 있지만 이 4가지가 CPU에서는 많이 쓰이고, 사실 논리게이트 그 자체의 개념은 쉽습니다.
본격적인 설명에 앞서, 디지털 세계의 규칙에 대해 간략하게 설명하겠습니다.
I) 모든것은 0과 1로 표현된다.: 흔히 말하는 컴퓨터는 2진수를 쓴다는 뜻 입니다. 이때 0과 1의 판명기준은 전압이 특정값 이상이면 1, 이하면 0 입니다.
EX) 숫자의 경우 2진수 여러자리, 색상의 경우 컬러코드, 파동의 경우 양자화된(짧게 불연속적으로 썰렸다는 거에요.) 2진수 덩어리 등 예외는 없습니다.
II) 입력(Input)은 들어가고, 출력(Output)은 나온다.: 즉 입력으로 값이 나오거나, 출력으로 값이 들어갈 수 없습니다.
EX) 키보드를 가지고 알파벳을 입력하지만, 키보드 그 자체가 알파벳을 직접 띄어주지는 않죠.
III) 확률은 없다.: 모든 결과는 예측가능하게 나옵니다. 즉, 고전적인 함수처럼 같은 Input에 같은 System이면, 같은 Output이 나옵니다.
EX) 계산기에 1+2를 넣으면 3이 나옵니다. 다른 값이 나오면 99.9%확률로 잘못쳤거나, 0.1%확률로 고장났겠죠? 컴퓨터가 랜덤을 표현하는 방법에 대해서는 여기를 참고하면 도움이 될 것입니다. https://x0fansa-hk.tistory.com/12
결론: 어지간하면 이 규칙들을 벗어나는 일은 없습니다.
(Let, 0은 0V, 1은 5V라고 할게요. 4개 모두)
NOT : 1을 넣으면 0을 출력, 0을 넣으면 1을 출력.

기준전위(1이라고 판명하는 전위) 이상이 입력핀에 감지되면, 출력핀을 0V의 전위로 설정합니다. 반대로, 기준전위(0이라고 판명하는
전위) 이하가 입력핀에 감지되면, 출력핀을 5V의 전위로 설정합니다. 입력과 반대로 하자는 거에요.
옆의 이미지는 NOT게이트의 심벌입니다. 여기서 실질적으로 NOT을 의미하는건 Output바로 옆의 조그만한 동그라미 입니다. 큰 삼각형 자체는 큰 의미 없는 버퍼에요.(여기서는 도선취급)


NOT게이트를 회로도로 표현을 해보긴 했는데, 사실 아래의 3개에 비해, NOT게이트를 직접 회로로 표현하는건 아직은 어렵습니다. 즉 그냥 회로도만 보고 "이런게 있구나~"하고 넘어가도 문제 없습니다. 만약 해석하고 싶다면 전압분배법칙이나 CMOS를 이해한다면 가능은 합니다.
cf) 보통 입력핀에 전류가 들어온다, 출력핀에 전류가 나간다 라고 하지만 이건 반만 맞는 말입니다. 만약 출력핀이 0V라면 전자기학적으로 전류가 나갈 수 없겠죠? 따라서 처음부터 전위를 설정한다는 개념으로 공부하는게 편하고 실제로도 맞는 정의입니다.
AND : 입력들이 모두 1이면 1을 출력, 입력중 하나라도 0이 있다면, 0을 출력.

여러개의 입력들 중(보통 2개입니다.) 단 한개의 입력핀이라도 기준전위 이하를 받는다면(0을 입력받음), 출력핀의 전위를 0V로 설정합니다. 그러면 반대로 모든 입력핀이 기준전위 이상을 받는다면(입력이 전부 1이겠죠?), 출력핀의 전위를 5V로 설정합니다. AND를 흔히 논리곱이라고 표현(진짜로 곱셈기호를 써요.)을 하는데요, 모든 입력이 1이라면, 입력값을 전부 곱하면 결과는 1입니다. 그러나 한개 이상의 입력핀이 0을 가진다면, 입력값을 전부 곱해도 결과는 반드시 0입니다.

물리적 회로로 봅시다. 여기서 스위치가 하나라도 눌리지 않는다면 LED는 켜지지 않습니다. 반대로 스위치가 둘다 눌린다면 LED가 켜집니다.
OR : 입력들이 모두 0이면 0을 출력, 입력중 하나라도 1이 있다면, 1을 출력.

여러개의 입력들 중 단 한개의 입력핀이라도 기준전위 이상을 받는다면(1을 입력받음), 출력핀의 전위를 5V로 설정합니다. 반대로 모든 입력핀이 기준전위 이하를 받는다면(입력이 전부 0), 출력핀의 전위를 0V로 설정합니다. OR를 흔히 논리합이라고 표현(역시 진짜로 덧셈기호를 써요.)을 하는데요, 모든 입력이 0이라면, 입력값을 전부 더해도 결과는 0입니다. 그러나 한개 이상의 입력핀이 1을 가진다면, 입력값을 전부 더하면 결과는 반드시 1이상입니다.(1초과 값인 2,30, 1억...등을 갖는다고 해도 어쨌든 0보다 크니까 1이라고 침니다.)

물리적 회로로 봅시다. 여기서 스위치가 하나라도 눌린다면 LED는 켜집니다. 두개 다 누른다고 해서 LED가 더 반짝이거나 하지 않습니다. 반대로 스위치가 둘다 눌리지 않는다면 LED가 켜지지 않습니다.
(이거는 특별히 2개의 입력만 가진다고 가정할게요. 실제로도 그 3개 이상은 잘 안써요.)
XOR : 입력이 서로 같으면 0을 출력, 입력이 서로 다르면 1을 출력

입력핀 두개가 둘다 기준전위 이상(1과 1)이거나, 둘다 기준전위 이하(0과 0)라면, 출력핀의 전위를 0V로 설정합니다. 반대로 입력핀이 하나는 기준전위 이상, 나머지 하나는 기준전위 이하라면 출력핀의 전위를 5V로 설정합니다. 같으면 0출력, 다르면 1출력 이라는 것이죠.
cf) 이게 은근히 헷갈립니다. 그래서 아래 한줄을 외우시길 추천 드립니다.
XOR RAX, RAX
제 블로그의 MJSEC카테고리(https://x0fansa-hk.tistory.com/category/MJSEC)에서는 어셈블리어를 다루는데 여기서 무언가를 종료할때 많이 쓰이는 코드입니다. 이때 종료를 위해서는 0을 출력해야 합니다. 잘은 모르겠지만 RAX라는거 2개를 XOR연산을 합니자. 그러면 똑같은거 두개 XOR이니, 반드시 0이 나오지요. "종료(0)를 위해 똑같은거를 XOR연산하자." 이렇게 외우시면 도움이 될 것입니다.(아닐수도 있고요)

회로로 보면 이런식으로 만들어 지기는 하는데, 실제 XOR게이트에 쓰이는 mosfet은 spdt가 아니므로 이거만큼은 이해를 돕기 위한 회로일 뿐 실제로는 더 복잡합니다.
진리표
따라서 이번에 배운거 4개의 논리게이트를 표로 정리해보았습니다. 이러한 표를 저희는 진리표라고 부릅니다.
| NOT | |
| Input | Output |
| 0 | 1 |
| 1 | 0 |
| AND | ||
| Input1 | Input2 | Output |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| OR | ||
| Input1 | Input2 | Output |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| XOR | ||
| Input1 | Input2 | Output |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
이후 글에서는 실제로 이 논리게이트를 가지고 회로실험을 간략히 해보겠습니다. 어차피 CPU를 만들기 위해서는 직접 다뤄봐야해요. (스포일러. 현실은 언제나 이론과 같지 않습니다.)
https://x0fansa-hk.tistory.com/35
NOT, AND, OR, XOR 게이트 실전편 - 74HC04, 74HC08, 74HC32, 74HC86
이제부터는 실제로 이 논리게이트들이 어떻게 동작을 하는지 회로실험을 통하여 알아보겠습니다. 기본적으로 매우 자주쓰는 논리게이트이기에 쉽고 싸게 살 수 있습니다. 대표적으로 제가 오
x0fansa-hk.tistory.com
참고자료: 제가 위의 회로도를 모두 직접 만든 거시야요.
'Nebula > 8bit CPU' 카테고리의 다른 글
| 8bit CPU 사전준비) 하이사이드 & 로우사이드 스위칭 (0) | 2026.07.07 |
|---|---|
| 8bit CPU 사전준비) TTL과 CMOS 조금만 (0) | 2026.06.30 |
| 8bit CPU 사전준비) 풀업 & 풀다운 (1) | 2026.05.11 |
| 8bit CPU 사전준비) 8bit CPU였던것 (1) | 2026.05.05 |
