4강 / 20강

부울대수 — 논리를 계산으로 바꾸기

그리고 그 계산을 그대로 만든 전자 회로

부울대수 — 논리를 계산으로 바꾸기
논리 연산을 전기 스위치로 만든 것이 게이트입니다. CPU는 이 게이트 수십억 개예요.

1854년, 조지 부울(George Boole)이라는 사람이 이런 생각을 합니다. "참·거짓도 숫자처럼 계산할 수 있지 않을까?"

그래서 참을 1, 거짓을 0으로 놓고 ∧를 곱하기(·), ∨를 더하기(+)처럼 다루기로 했습니다. 이것이 부울대수(Boolean algebra)입니다.

논리부울대수확인
p ∧ qp · q (곱)1·1=1, 1·0=0, 0·0=0 — 정확히 AND
p ∨ qp + q (합)0+0=0, 1+0=1, 1+1=1 — 여기만 다름
¬pp' 또는 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 의 값은?
🤔 확인 문제
A or (A and B) 를 간소화하면?
🤔 확인 문제
NAND 게이트가 특별히 중요한 이유는?