4강 / 20강
부울대수 — 논리를 계산으로 바꾸기
그리고 그 계산을 그대로 만든 전자 회로
1854년, 조지 부울(George Boole)이라는 사람이 이런 생각을 합니다. "참·거짓도 숫자처럼 계산할 수 있지 않을까?"
그래서 참을 1, 거짓을 0으로 놓고
∧를 곱하기(·), ∨를 더하기(+)처럼 다루기로 했습니다.
이것이 부울대수(Boolean algebra)입니다.
| 논리 | 부울대수 | 확인 |
|---|---|---|
| p ∧ q | p · q (곱) | 1·1=1, 1·0=0, 0·0=0 — 정확히 AND |
| p ∨ q | p + q (합) | 0+0=0, 1+0=1, 1+1=1 — 여기만 다름 |
| ¬p | p' 또는 p̄ | 1'=0, 0'=1 |
1 + 1 = 1 이 눈에 걸리죠? 참에 참을 더해도 그냥 참이니까요. "또는"의 세계에서는 참이 아무리 많아도 참일 뿐입니다.
AND 는 곱셈, NOT 은 1에서 빼기. 논리가 산수가 되었습니다.
Python
브라우저에서 실행
🎮 게이트를 직접 켜 보세요
입력 스위치를 켜고 끄면 출력 전구가 바뀝니다. NAND 게이트 하나만으로 AND · OR · NOT 을 전부 만들 수 있다는 것도 확인해 보세요. 그래서 실제 반도체 공장은 NAND 하나만 잘 만들면 됩니다.
부울대수의 법칙들
산수와 닮았지만 딱 두 군데가 다릅니다.
- 교환·결합·분배 — 산수와 같습니다.
p·q = q·p,p·(q+r) = p·q + p·r - 흡수법칙 — 산수에 없습니다.
p + p·q = p("비가 오거나, 비가 오면서 춥거나" = 그냥 "비가 온다") - 멱등법칙 — 산수에 없습니다.
p + p = p,p · p = p
이 법칙들로 식을 줄이는 것을 간소화라고 합니다. 게이트 수가 줄면
칩이 작아지고 전기를 덜 먹어요. 코드에서는 if 조건이 짧아집니다.
코드 리뷰에서 조건문이 길다고 지적받았다면 흡수법칙을 떠올리세요.
Python
브라우저에서 실행
같은 결과, 5분의 1 크기. 이것이 논리 설계의 일입니다.
Python
브라우저에서 실행
🤔 확인 문제
부울대수에서
1 + 1 의 값은?해설
+ 는 OR 입니다 — "참이거나 참"은 그냥 참이므로 1이에요. 자리올림이 생기는 이진수 덧셈(1+1=10)과 혼동하기 쉬운데, 그건 부울대수가 아니라 산술 덧셈입니다.🤔 확인 문제
A or (A and B) 를 간소화하면?해설 흡수법칙입니다. A가 참이면 뒷부분을 볼 필요도 없이 전체가 참이고, A가 거짓이면
A and B도 거짓이라 전체가 거짓 — 결국 A의 값만 그대로 나옵니다.🤔 확인 문제
NAND 게이트가 특별히 중요한 이유는?
해설 NAND는 기능적으로 완전(functionally complete)합니다. 두 입력을 묶으면 NOT이 되고, NOT을 붙이면 AND가 되고, 드모르간으로 OR도 만들어져요. 그래서 실제 칩은 NAND 한 종류를 대량으로 찍어 씁니다.