논리 게이트
인텔의 첫 마이크로프로세서인 1971년 4004에는 트랜지스터가 2,300개 있었습니다. 트랜지스터를 이어 게이트를 만들고, 프로세서는 그 게이트들로만 이루어집니다.
섀넌의 두 회로를 책상 위에서
섀넌이 말한 두 회로는 전지 하나, 전구 하나, 스위치 두 개로 책상 위에서도 만들 수 있습니다. 스위치 두 개를 한 줄로 이으면(직렬) 첫째와 둘째가 모두 닫혀야 전구가 켜집니다. 두 스위치를 나란히 이으면(병렬) 어느 한쪽만 닫혀도 전구가 켜집니다. 이렇게 단순한 회로도 벌써 판단을 합니다. 논리 게이트는 같은 일을 하는 작은 회로이고, 손 스위치 대신 트랜지스터로 만듭니다. 입력 비트 한두 개를 받아서 미리 정한 규칙대로 출력 비트 하나를 내보냅니다.
게이트 여섯 개와 진리표
AND는 두 입력이 모두 1일 때만 1을 냅니다. 한 줄로 이은 스위치와 같습니다. OR는 입력 가운데 하나라도 1이면 1을 냅니다. 나란히 이은 스위치와 같습니다. NOT는 입력이 하나뿐이고 그 값을 뒤집어서, 0은 1로, 1은 0으로 바꿉니다. XOR는 exclusive or, 우리말로 배타적 논리합이라고 하며 두 입력이 서로 다를 때 1을 냅니다. NAND와 NOR는 AND와 OR 뒤에 NOT를 하나 더 붙인 것이라 출력이 정반대입니다. 진리표는 나올 수 있는 입력 조합을 빠짐없이 적고, 조합마다 출력을 함께 적은 표입니다. 입력이 둘이면 네 줄, 셋이면 여덟 줄, n개면 2의 n제곱 줄이 됩니다. 줄 순서는 00, 01, 10, 11처럼 이진수로 세는 순서를 따르면 빠뜨리지 않습니다.
끌어서 돌리고, 휠이나 두 손가락으로 확대하세요.
| A | B | AND | OR | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
경보기, 같은지 확인하기, 비밀번호 검사
게이트를 엮으면 얼마든지 큰 규칙을 만들 수 있습니다. 도난 경보기를 생각해 보세요. 경보가 켜져 있고(AND), 문이 열렸거나(OR) 창문이 열렸을 때 울려야 합니다. OR 게이트 하나의 출력을 AND 게이트 하나에 넣으면 이 규칙이 됩니다. 두 비트가 같은지 보려면 XOR 뒤에 NOT를 붙입니다. XOR는 두 비트가 다를 때만 1을 내니까, 뒤집으면 같을 때 1이 됩니다. 이런 게이트 여덟 개를 나란히 놓고 출력을 모두 AND로 모으면 두 바이트 전체가 같은지 알려 주는 회로가 됩니다. 휴대폰 잠금 화면이 「비밀번호가 맞는가」를 따지는 일도, 전자레인지가 「타이머가 0이 되었는가」를 따지는 일도 결국 이런 회로로 처리됩니다. 실제 기기의 회로가 꼭 이 모양이라는 말은 아니고, 말로 된 규칙을 게이트로 옮기면 이렇게 된다는 예입니다.
NAND 하나로 모든 게이트를 만드는 법
NAND에는 쓸모 있는 성질이 있습니다. NAND 게이트만 있으면 다른 게이트를 모두 만들 수 있습니다. NAND의 두 입력을 하나로 묶으면 NOT가 됩니다. 1과 1의 NAND는 0, 0과 0의 NAND는 1이니까요. 이 NOT를 다른 NAND 뒤에 붙이면 다시 AND가 됩니다. NAND를 몇 개 더 쓰면 OR와 XOR도 나옵니다. 칩을 만드는 회사로서는 충분히 시험한 모양 하나를 칩 위에 엄청나게 많이 깔면 되니 편합니다. 실제 칩에서는 게이트 하나가 트랜지스터 몇 개로 이루어집니다. 4004에는 트랜지스터가 2,300개였고, 인텔은 2010년 2세대 코어 프로세서의 트랜지스터를 11억 6천만 개로 적었습니다. 1971년부터 39년 사이에 약 50만 배로 늘었습니다.
- 「OR는 둘 중 하나만이라는 뜻이다.」 일상에서 쓰는 「또는」은 그런 뜻일 때가 많습니다. 중국집에서 「짜장면 또는 짬뽕」이라고 하면 하나만 고르라는 말이고, 이것은 논리로 치면 XOR에 가깝습니다. OR는 두 입력이 모두 1일 때도 1을 냅니다. 말 하나가 두 뜻으로 쓰이다 보니 논리에서는 둘에 이름을 따로 붙였습니다.
- 「입력이 3개면 진리표는 6줄이다.」 3 × 2로 세면 안 됩니다. 입력이 하나 늘 때마다 앞의 모든 줄이 새 입력 0일 때와 1일 때로 한 번씩 나뉘어 두 배가 됩니다. 2³ = 8줄입니다. 입력이 4개면 벌써 16줄입니다.
- 「NAND와 NOR는 새로운 종류의 스위치다.」 NAND는 AND 뒤에, NOR는 OR 뒤에 NOT를 붙인 것일 뿐이고 안에서 새로운 일이 일어나지 않습니다. NAND가 특별한 까닭은 NAND 하나만으로 다른 게이트를 모두 만들 수 있어서입니다. 위의 진리표에서도 NAND 열은 AND 열을, NOR 열은 OR 열을 그대로 뒤집은 모양입니다.
- 입력이 1과 0일 때 AND의 출력은?
- 입력이 1과 0일 때 OR의 출력은?
- 입력이 1과 1일 때 XOR의 출력은?
- 입력이 1과 1일 때 NAND의 출력은?
- 입력이 0과 0일 때 NOR의 출력은?
- 입력이 3개인 게이트의 진리표는 몇 줄입니까?
- 전구와 직렬로 놓은 스위치 두 개는 어떤 게이트처럼 움직입니까?
- AND
- OR
- XOR
- NOT
- NAND 게이트의 두 입력을 하나로 묶으면 어떤 게이트가 됩니까?
- NOT
- AND
- OR
- XOR
- 1971년 인텔 4004에는 트랜지스터가 몇 개 있었습니까?
- 섀넌의 1938년 논문은 무엇을 보였습니까?
- 스위치 회로가 참과 거짓의 불 대수를 따른다
- 트랜지스터가 계전기보다 빠르다
- 이진수가 1938년에 발명되었다
- 컴퓨터에는 십진 숫자가 필요하다
- 게이트는 정해진 규칙으로 입력 비트를 출력 비트로 바꿉니다.
- AND는 둘 다 1, OR는 하나라도 1, NOT는 뒤집기, XOR는 입력이 서로 다를 때입니다.
- NAND와 NOR는 AND와 OR의 출력을 뒤집은 것이고, NAND만으로 모든 게이트를 만들 수 있습니다.
- 입력이 n개인 진리표는 2ⁿ줄입니다.
이 과정의 출처 (9)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
- Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
- IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
- IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
- Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
- Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
- Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
- abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
- John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).
확인한 날: 2026-10-17