컴퓨터의 판단은 작은 질문에서 시작된다
앞에서 우리는 글자, 그림, 소리도 결국 0과 1의 묶음으로 표현할 수 있다는 것을 보았다. 그런데 컴퓨터는 0과 1을 그냥 쌓아 두기만 하지 않는다. 0과 1을 보고 판단한다.
예를 들어 보자.
"비밀번호가 맞는가?"
"저장 버튼이 눌렸는가?"
"배터리가 충분한가?"
"두 숫자 중 어느 쪽이 더 큰가?"
겉으로 보면 컴퓨터가 똑똑하게 생각하는 것 같다. 하지만 안쪽으로 들어가면 아주 작은 질문들이 줄지어 있다.
"예인가, 아니오인가?"
"1인가, 0인가?"
이 질문을 전기 회로로 처리하는 작은 블록을 논리 게이트라고 한다. 게이트는 영어로 '문'이라는 뜻이다. 논리 게이트는 0과 1이 지나가며 판단을 받는 문이라고 생각하면 된다.
문 앞에 경비원이 서 있다고 상상해 보자. 경비원은 복잡한 대화를 하지 않는다. 정해진 규칙만 본다.
"두 조건이 모두 맞으면 통과."
"둘 중 하나만 맞아도 통과."
"들어온 신호를 반대로 바꿔서 통과."
이 단순한 규칙들이 모이면 계산기, 게임기, 스마트폰, 컴퓨터의 판단력이 된다.
AI 생성 이미지
AND 게이트: 둘 다 맞아야 1
먼저 AND 게이트를 보자. AND는 "그리고"라는 뜻이다. 조건이 두 개 있을 때, 둘 다 참이어야 결과가 참이 된다.
장난감 금고를 생각해 보자. 금고가 열리려면 두 가지 조건이 필요하다.
열쇠가 꽂혀 있어야 한다.
비밀번호도 맞아야 한다.
열쇠만 있고 비밀번호가 틀리면 열리지 않는다. 비밀번호만 맞고 열쇠가 없으면 역시 열리지 않는다. 둘 다 맞아야 열린다.
이것이 AND의 생각법이다.
입력 A를 "열쇠가 있음"이라고 하고, 입력 B를 "비밀번호가 맞음"이라고 하자. 출력은 "금고가 열림"이다.
| 입력 A | 입력 B | 출력 A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
이런 표를 진리표라고 한다. 진리표는 입력이 어떤 상태일 때 출력이 어떻게 되는지 한눈에 보여 주는 약속표다. 여기서 1은 "예", 0은 "아니오"라고 읽어도 된다.
AND 게이트는 두 입력이 모두 1일 때만 1을 내보낸다.
스위치 회로로도 쉽게 떠올릴 수 있다. 전지와 LED 사이에 스위치 두 개를 일렬로 놓는다. 전기가 지나가려면 첫 번째 스위치도 닫혀야 하고, 두 번째 스위치도 닫혀야 한다. 하나라도 열려 있으면 길이 끊긴다.
즉 AND는 "길이 모두 이어져야 전기가 지나가는 회로"라고 생각할 수 있다.
OR 게이트: 하나라도 맞으면 1
이번에는 OR 게이트다. OR는 "또는"이라는 뜻이다. 여러 조건 중 하나라도 참이면 결과가 참이 된다.
어두운 방에 불을 켜는 방법이 두 가지 있다고 해 보자.
벽 스위치를 누른다.
리모컨 버튼을 누른다.
둘 중 하나만 해도 불이 켜진다. 둘 다 눌러도 당연히 켜진다. 아무것도 누르지 않을 때만 꺼져 있다.
이것이 OR의 생각법이다.
| 입력 A | 입력 B | 출력 A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
OR 게이트는 입력 중 하나라도 1이면 출력이 1이 된다.
스위치 회로로 생각하면 전기 길이 두 갈래로 나뉘어 있는 모습이다. 스위치 두 개가 나란히 놓여 있고, 둘 중 어느 길 하나만 이어져도 전기가 LED까지 갈 수 있다. 두 길이 모두 끊겼을 때만 LED가 꺼진다.
즉 OR는 "여러 길 중 하나만 열려도 전기가 지나가는 회로"라고 생각할 수 있다.
AND가 까다로운 경비원이라면, OR는 조금 너그러운 경비원이다.
AND 경비원은 말한다.
"조건을 전부 가져오세요."
OR 경비원은 말한다.
"조건 중 하나만 가져와도 됩니다."
NOT 게이트: 반대로 바꾸는 문
세 번째는 NOT 게이트다. NOT은 "아니다"라는 뜻이다. NOT 게이트는 입력을 반대로 바꾼다.
입력이 1이면 출력은 0이 된다. 입력이 0이면 출력은 1이 된다.
| 입력 A | 출력 NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
처음 보면 이상하게 느껴질 수 있다. 왜 굳이 반대로 바꾸는 문이 필요할까?
일상에서도 NOT은 자주 쓰인다.
"비가 오지 않으면 운동장에 간다."
"문이 닫혀 있지 않으면 경고음을 울린다."
"배터리가 충분하지 않으면 절전 모드로 들어간다."
여기에는 모두 "아니다"라는 판단이 들어 있다.
NOT 게이트는 컴퓨터 안에서 매우 중요하다. 0을 1로, 1을 0으로 바꾸는 능력이 있어야 조건을 뒤집어 생각할 수 있기 때문이다. "켜졌다"뿐 아니라 "꺼졌다"도 판단해야 하고, "같다"뿐 아니라 "같지 않다"도 판단해야 한다.
NOT 게이트는 회로 안의 뒤집기 스위치라고 볼 수 있다.
스위치 회로가 트랜지스터 회로가 된다
지금까지는 손으로 누르는 스위치를 떠올렸다. 하지만 실제 컴퓨터 안에서는 사람이 스위치를 누르지 않는다. 대신 트랜지스터가 스위치 역할을 한다.
트랜지스터는 작은 전기 신호로 전기의 길을 이어 주거나 끊는 부품이다. 처음에는 입력이 1이면 길을 이어 주고, 입력이 0이면 길을 끊는 스위치처럼 생각해도 좋다. 실제 칩 안의 트랜지스터는 종류와 연결 방식에 따라 더 정교하게 움직이지만, 지금은 "전기로 조종하는 작은 문"이라고 이해하면 충분하다.
AND 게이트를 스위치 모델로 생각하면 스위치 두 개를 일렬로 놓은 모습과 비슷하다.
첫 번째 스위치는 입력 A가 1일 때 길을 이어 준다.
두 번째 스위치는 입력 B가 1일 때 길을 이어 준다.
두 길이 모두 이어져야 출력 쪽에 원하는 신호가 만들어진다.
이 구조는 앞에서 본 AND의 생각과 같다.
OR 게이트는 스위치 두 개를 나란히 놓은 모습으로 떠올릴 수 있다.
입력 A가 1이면 첫 번째 길이 이어진다.
입력 B가 1이면 두 번째 길이 이어진다.
둘 중 하나라도 길이 이어지면 출력이 1이 된다.
NOT 게이트는 조금 다르다. 입력이 1일 때 출력이 0이 되고, 입력이 0일 때 출력이 1이 되어야 한다. 그래서 전원 쪽에서 출력을 1로 끌어올리는 길과, 출력을 0으로 끌어내리는 길을 서로 반대로 움직이게 만든다. 실제 반도체 칩에서는 이런 일을 매우 작은 트랜지스터들이 짝을 이루어 처리한다.
다만 실제 컴퓨터 칩 안의 게이트가 항상 우리가 그린 스위치 그림 그대로 만들어지는 것은 아니다. 예를 들어 칩에서는 NAND나 NOR처럼 "AND나 OR의 결과를 한 번 뒤집은 게이트"를 먼저 만들고, 필요하면 NOT 게이트를 붙여 원하는 결과를 얻는 경우가 많다. 하지만 기본 생각은 같다. 트랜지스터들이 정해진 방식으로 연결되어 0과 1의 규칙을 만든다.
중요한 점은 이것이다.
논리 게이트는 마법 상자가 아니다. 트랜지스터라는 작은 전기 스위치들을 정해진 모양으로 연결한 회로다.
트랜지스터 하나는 아주 단순한 일을 한다. 길을 이어 주거나 끊는다. 그런데 여러 개를 잘 연결하면 "둘 다 1인가?", "하나라도 1인가?", "반대로 바꾸면 무엇인가?" 같은 판단을 할 수 있다.
진리표는 회로의 약속을 보여 주는 지도
회로가 복잡해지면 머릿속으로만 생각하기 어렵다. 이때 진리표가 도움이 된다.
진리표는 가능한 입력 조합을 모두 적고, 그때의 출력을 차례대로 적은 표다. 마치 놀이공원 안내도처럼 "이 조건에서는 이쪽으로 간다"를 보여 준다.
입력이 하나라면 경우는 두 가지다.
0
1
입력이 두 개라면 경우는 네 가지다.
0, 0
0, 1
1, 0
1, 1
입력이 세 개라면 경우는 여덟 가지가 된다. 입력이 하나 늘어날 때마다 가능한 경우의 수가 두 배가 된다. 앞에서 비트가 늘어날수록 표현할 수 있는 값이 두 배씩 늘어난다고 배웠다. 진리표도 같은 원리다.
진리표를 쓰면 회로의 성격을 분명히 볼 수 있다.
예를 들어 어떤 회로가 다음과 같이 동작한다고 하자.
| A | B | 출력 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
이 회로는 AND도 아니고 OR도 아니다. 두 입력이 서로 다를 때만 1이 된다. 이런 회로는 나중에 덧셈 회로를 만들 때 중요한 역할을 한다.
지금 당장 이름을 외울 필요는 없다. 중요한 것은 회로를 진리표로 표현하면 "이 회로가 어떤 판단을 하는지" 눈에 보인다는 점이다.
게이트를 연결하면 생각이 길어진다
논리 게이트 하나가 할 수 있는 일은 단순하다. 하지만 게이트의 출력은 다시 다른 게이트의 입력이 될 수 있다. 여기서 컴퓨터의 힘이 시작된다.
조건문으로 생각해 보자.
"숙제를 끝냈고, 부모님 허락을 받았고, 비가 오지 않으면 놀이터에 간다."
이 문장은 여러 판단이 묶여 있다.
A: 숙제를 끝냈는가?
B: 부모님 허락을 받았는가?
C: 비가 오는가?
먼저 A와 B를 AND 게이트에 넣는다.
"숙제를 끝냈고 부모님 허락을 받았는가?"
그 결과가 1이면 첫 번째 조건 묶음은 통과다.
그다음 C를 NOT 게이트에 넣는다.
"비가 오지 않는가?"
비가 오면 C는 1이지만, NOT C는 0이 된다. 비가 오지 않으면 C는 0이고, NOT C는 1이 된다.
마지막으로 두 결과를 다시 AND 게이트에 넣는다.
"숙제와 허락 조건이 맞고, 비도 오지 않는가?"
이 전체 판단을 식처럼 쓰면 다음과 같다.
(A AND B) AND (NOT C)
이 식은 수학 문제처럼 보일 수 있지만, 사실은 작은 문들의 연결도다. A와 B가 첫 번째 문을 지나고, C는 뒤집기 문을 지나고, 두 결과가 마지막 문 앞에서 다시 검사받는다.
컴퓨터 안의 회로도 이와 비슷하다. 단순한 게이트들이 줄줄이 연결되어 더 긴 판단을 만든다. 그리고 그 판단 결과에 따라 데이터를 저장하거나, 숫자를 더하거나, 화면에 색을 표시하거나, 다음 명령어를 실행한다.
판단 회로는 계산 회로의 출발점이다
여기서 한 가지 중요한 사실을 잡고 가자.
컴퓨터의 계산도 결국 판단에서 시작된다.
숫자를 더할 때도 회로는 묻는다.
"이 비트와 저 비트가 같은가?"
"둘 중 하나만 1인가?"
"둘 다 1이라서 다음 자리로 올림을 보내야 하는가?"
우리가 보기에는 덧셈이 숫자를 다루는 일처럼 보이지만, 회로 안에서는 0과 1에 대한 작은 판단들이 계속 이어진다.
AND는 "둘 다 1인가?"를 묻는다.
OR는 "하나라도 1인가?"를 묻는다.
NOT은 "반대로 보면 무엇인가?"를 묻는다.
이 세 가지 생각법만으로도 많은 회로를 만들 수 있다. 여기에 몇 가지 게이트가 더해지면 덧셈, 비교, 선택, 기억 같은 기능이 만들어진다.
이번 장의 핵심은 간단하다.
컴퓨터의 판단력은 거창한 마법이 아니다. 아주 작은 예/아니오 질문들의 조합이다. 그리고 그 질문은 트랜지스터들이 만든 논리 게이트를 통해 전기 신호로 실행된다.
다음에는 이 논리 게이트들을 이용해 실제로 "덧셈하는 회로"를 만들어 볼 것이다. 0과 1이 단순한 표시를 넘어, 어떻게 계산의 재료가 되는지 살펴보자.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.