최근 수정 시각 : 2026-05-16 20:47:00

논리 연산

낸드에서 넘어옴

논리학
Logic
{{{#!wiki style="margin: -0px -10px -5px; min-height: 28px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1px -11px;"
<colbgcolor=#2ab5b5> 형식 논리 명제 논리(논리 연산 · 삼단논법(정언삼단논법) · 순환 논법 · 대당 사각형) ·정언 논리 · 공리 · 진릿값 · 조건문 · 필요조건과 충분조건 · 술어 논리 · 논증(논증의 재구성) · 모순 · 역설 · 논리적 오류(형식적 오류) · 존재함축 · 변증법
<colcolor=#000,#fff><keepall> 비표준 논리 직관 논리 · 양상논리 · 초일관 논리 · 다치논리(퍼지논리) · 선형논리 · 비단조 논리
<keepall> 메타 논리 집합론 · 완전성 정리 · 불완전성 정리
비형식 논리 딜레마(흑백논리)
<keepall> 비형식적 오류 귀납적 오류 · 심리적 오류 · 언어적 오류 · 자료적 오류 · 양비론 · 진영논리 · 편견 및 고정관념 · 궤변 · 거짓 등가성 · 거짓 딜레마
분야 수학철학 · 수리논리학
철학 관련 정보 · 논리학 관련 정보 · 수학 관련 정보 · 수리논리학 둘러보기
}}}}}}}}} ||

1. 개요2. 원소3. 종류
3.1. 부정 (NOT; ¬)3.2. 논리곱 (AND; ∧)3.3. 논리합 (OR; ∨)3.4. 부정 논리곱 (NAND; ⊼)3.5. 부정 논리합 (NOR; ⊽)3.6. 배타적 논리합 (XOR; ⊻)3.7. 함의 (IMPLY; →)3.8. 동치 (EQV; ≡)
4. 성질
4.1. 항등원(identity)4.2. 연산 우선 순위4.3. 쌍대성 원리(principle of duality)
5. 연산 법칙(law)
5.1. 교환법칙(commutative)5.2. 결합법칙(associative)5.3. 분배법칙(distributive)5.4. 멱등법칙(idempotent)5.5. 흡수법칙(absorption)5.6. 이중부정 법칙(involution)5.7. 드모르간 법칙(de Morgan's)5.8. 합의 법칙(consensus)5.9. 흡수원(Absorbing Element)5.10. 자신과 자신의 부정의 연산5.11. 기타 연산 법칙
6. 활용7. 기타8. 관련 문서9. 둘러보기

1. 개요

/ Logical operation

19세기 중반 영국의 수학자 조지 불이 고안하고 형식화한 대수적 구조 및 그 위에서 성립하는 연산 체계. 고안자의 이름을 따 불 대수(Boolean algebra), 불 연산(Boolean operation), 불 (Boolean ring)라고도 한다.[1]

2. 원소

불 대수는 단 두 개의 원소를 가진 대수적 구조이며, 그 원소는 서로 같지 않은 그 무엇도 될 수 있다. 편의상 [math(\{0, 1\})]을 자주 사용하지만 경우에 따라서는 [math(\{{\rm False}, {\rm True}\})] 또는 [math(\{\mathrm F,\mathrm T\})] 를 쓰기도 하며, 어떤 방식을 사용하든 아래 연산이 성립한다면 해당 구조는 불 대수와 동치이다.

집합 자체의 기호는 고안자의 이름을 따서 [math(\mathbb B)][2]로 표현한다. 흔히 이 집합을 불리언(Boolean)이라고 읽으며, 해당 집합의 원소들을 뜻하기도 한다. 아래의 연산과 함께 을 이룬다.
0 = False(F)
1 = True(T)
파일:상세 내용 아이콘.svg   자세한 내용은 진릿값 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[진릿값#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[진릿값#|]] 부분을
참고하십시오.

3. 종류

논리 연산의 가장 기본적인 3개 연산은 부정(NOT), 논리곱(AND), 논리합(OR)이다.

이들 3개 연산의 진리표는 다음과 같다.
||<tablealign=left><tablebordercolor=#ccc,#444><bgcolor=#ddd,#666><-2> NOT([math(\neg)]) ||
[math(A)] [math(\neg A)]
T F
F T
||<tablebordercolor=#ccc,#444><bgcolor=#ddd,#666><-3> AND([math(\wedge)]) ||
[math(A)] [math(B)] [math(A\wedge B)]
T T T
T F F
F T F
F F F
||<tablealign=left><tablebordercolor=#ccc,#444><bgcolor=#ddd,#666><-3> OR([math(\vee)]) ||
[math(A)] [math(B)] [math(A\vee B)]
T T T
T F T
F T T
F F F


처음 보는 연산의 경우 진리표(truth table)를 사용하면 비교적 단순한 연산의 결과는 직접 확인할 수 있다. 다만 변수의 개수가 늘어나면 확인해야 하는 값이 대폭 증가하기 때문에, 기초적인 이해를 돕는 이상의 활용은 어렵다. 아래의 진리표를 보자.

이진 이항연산에 대해 2의 4제곱, 즉 총 16가지 진리표가 존재할 수 있으며, 단항연산(4종)이나 상수(2종)로 환원되지 않는 10가지 연산의 목록은 다음과 같다. 즉, A와 B 모두 결과에 영향을 주는 연산으로, 사실상의 유의미한 이항연산이다. 이 중에서 NAND, NOR는 하나만으로 기본 연산 NOT, AND, OR을 모두 구성할 수 있다. 나머지 8가지는 혼자서 NOT을 만들지 못한다.
연산자 이름 진리표 (A,B)
(T,T) (T,F) (F,T) (F,F)
[math(\vee)] 논리합(OR) T T T F
[math(\wedge)] 논리곱(AND) T F F F
[math(\overline\vee)] 부정 논리합(NOR)[3] F F F T
[math(\overline\wedge)] 부정 논리곱(NAND)[4] F T T T
[math(\underline\vee)] 배타적 논리합(XOR)[5] F T T F
[math(\leftrightarrow,\, \equiv)] 동치(EQUIV)[6] T F F T
[math(\rightarrow)] 함의(IMP, 또는 IMPLY) T F T T
[math(\leftarrow)] 역(CONV)[7] T T F T
[math(\nrightarrow)] 비함의(NIMPLY)[8] F T F F
[math(\nleftarrow)] 역비함의[9] F F T F

아래 6개의 진리표는 단항연산자 또는 상수로 환원 가능하므로, 이항연산자로서의 의미가 없다. 단항연산자는 A, B중 하나만이 결과에 영향을 주고, 상수는 A, B 둘 다 결과에 영향을 주지 않기 때문이다.
종류 연산자 진리표 (A,B)
(T,T) (T,F) (F,T) (F,F)
단항연산 [math(A)] T T F F
[math(\neg A)] F F T T
[math(B)] T F T F
[math(\neg B)] F T F T
상수 [math(\mathrm{T})] T T T T
[math(\mathrm{F})] F F F F

3.1. 부정 (NOT; ¬)

참과 거짓을 뒤집는 단항연산이다.
NOT([math(\neg)])
[math(A)] [math(\neg A)]
T F
F T
  • 다른 표기법
    • [math(\bar{A})], [math(A')][10], [math(\sim A)](중등교육)
    • [math(!A)](컴퓨터 공학/프로그래밍 언어)

논리 연산에서 단항연산으로 가능한 것은 4종류밖에 없는데, 부정을 제외한 나머지 3가지는 항등연산[11], 항상 참([math(\top)]), 항상 거짓([math(\bot)])밖에 없어 실용적인 의미가 있는 단항연산은 부정 밖에 없다.

이 연산을 하는 회로는 따로 보수기(inverter)라는 이름으로 불린다.

3.2. 논리곱 (AND; ∧)

두 명제가 모두 참이어야 참값을 돌려준다.
AND([math(\wedge)])
[math(A)] [math(B)] [math(A\wedge B)]
T T T
T F F
F T F
F F F
  • 다른 표기법
    • [math(AB)], [math(A\cdot B)]
    • 컴퓨터 공학/프로그래밍 언어: [math(A\&B)][12], [math(A\&\&B)]

C언어의 영향을 받은 프로그래밍 언어에서는 일반적으로 &[13] 또는 &&를 논리곱 연산자로 사용하며, 불 대수에서는 AND는 곱셈과 동치이다. 불 곱(Boolean multiplication) 혹은 논리곱이라 부른다. 아래의 연산결과를 보면 왜 곱셈과 동치인지 쉽게 알 수 있을 것이다. [math(AB)] 또는 [math(A\cdot B)]으로도 표시한다.

3.3. 논리합 (OR; ∨)

두 명제 중 하나 이상 참일 때 참값을 돌려준다. 그렇기 때문에 자연 언어(영어)의 or보다는 and/or와 같다고 볼 수 있다.[14]
OR([math(\vee)])
[math(A)] [math(B)] [math(A\vee B)]
T T T
T F T
F T T
F F F
  • 다른 표기법
    • [math(A+B)], [math(A\cdot B)]
    • 컴퓨터 공학/프로그래밍 언어: | [15], ||

불 대수에서는 OR는 덧셈과 동치여서, 논리합(Boolean addition)으로 부른다.

[math(A+B)][16]로도 표시하는데, 참값을 [math(\boldsymbol{1})], 논리합을[math(+)]으로 표기할 때 [math(boldsymbol{1} + boldsymbol{1} = boldsymbol{1})]로 자연수의 덧셈과 다름에 주의해야 한다.

3.4. 부정 논리곱 (NAND; ⊼)

Not AND. 논리곱의 결과값을 부정한 것이다. 즉, 두 명제가 모두 참이면 거짓값을 돌려주고 그 외에는 참값을 돌려준다.
NAND([math(\barwedge)])
[math(A)] [math(B)] [math(A\barwedge B)]
T T F
T F T
F T T
F F T

NAND만을 통해 다른 논리 연산식을 모조리 구현할 수 있기 때문에 컴퓨터 공학에서는 NAND만 있으면 모든 논리 회로를 만들 수 있다는 'NAND 유니버설'(NAND universal)의 시작점이다. [17] 현재 사용되는 플래시 메모리들은 대부분이 NAND 회로로 구성되어 있다.

3.5. 부정 논리합 (NOR; ⊽)

Not OR. 논리합의 결과값을 부정한 것이다. 즉, 두 명제가 모두 거짓이면 참값을 돌려주고 그 외에는 거짓값을 돌려준다.
NOR([math(\overline\vee)])
[math(A)] [math(B)] [math(A\overline\vee B)]
T T F
T F F
F T F
F F T

NAND와 마찬가지로 NOR만으로 다른 논리 연산식을 모조리 구현할 수 있기에 초기 플래시 메모리들은 대부분이 NOR 회로로 구성하였다. 그러나 NAND 회로가 훨씬 저렴해 이쪽은 자연스럽게 도태되었다. 부정은 NAND와 같은 방식으로, AND와 OR은 반대 방식으로 조합하면 된다.

3.6. 배타적 논리합 (XOR; ⊻)

eXclusive OR. 두 명제 중 정확히 하나만 참이어야 하는 경우. 즉 두 명제의 참 거짓 여부가 다를 때 참값을 돌려준다. [math(A'B+AB')][18]와 동치이다.[19] 논리학에서는 기호 [math(\veebar)]를 사용하지만, 공학에서는 [math(\oplus)][20]를 사용한다.

C언어의 영향을 받은 프로그래밍 언어에서는 ^를 배타적 논리합, 배타적 비트합 기호로 사용한다. 다만 일반적인 경우에는 ^가 제곱으로 사용되기 때문에 처음 프로그래밍 언어를 배우는 사람들은 제곱을 하려고 ^ 기호를 사용했다가 낭패를 겪는 경우가 있다.(…)[21][22] 이 방식으로 특정 '키'를 이용해 암호화를 하면 그 '키'로 복호화가 가능해서, 암호화 기법으로도 널리 사용된다. 비교 대상의 비트가 0이든 1이든 상관 없이 같기만 하면 0을 돌려준다는 특성을 이용하여 어셈블리어 등의 언어에서 어떤 레지스터나 변수를 0으로 초기화할 때 사용되기도 한다.[23] 이런 특성 때문에 XOR을 이용해 임시 변수 없이 변수를 스왑하는 기법[24]은 메모리 사용량에서야 좀 이득을 보겠지만 실제론 거의 사용되지 않는다. 스왑하는 값이 같은 주소를 참조한다면 엉망이 되기 때문.

결합법칙이 성립하므로 n항연산으로 일반화 가능하다. 이 경우 n개의 입력 중 참의 개수가 홀수이면 출력이 참이 되는 연산으로 정의된다. 하지만 배타적 부정 논리합은 결합법칙이 성립하지 않으므로, n개의 입력 중 참의 개수가 짝수일 때 출력이 참이 되는 연산은 배타적 논리합으로 결합한 식 전체에 부정을 취해야만 한다.
XOR([math(\veebar)])
[math(A)] [math(B)] [math(A\veebar B)]
T T F
T F T
F T T
F F F

3.7. 함의 (IMPLY; →)

Implication. A→B에서 A가 참이고 B가 거짓일 때에만 거짓을 돌려준다. 즉 A가 아니거나 B라는 뜻으로, (not A) or B와 같다.
IMPLY([math(\rightarrow)])
[math(A)] [math(B)] [math(A\rightarrow B)]
T T T
T F F
F T T
F F T

식 [math(A \rightarrow B)]는 [math(A)]가 [math(B)]의 충분조건임을 나타낸다.

일반적으로 "A이면 B이다."로 번역되는데, A가 거짓이고 B가 거짓이어도 참이라는 점([math(\mathrm{F} \rightarrow \mathrm{F} = \mathrm{T})])이 의아할 수 있다.

다음 문장(또는 수식)을 보자.
{{{#!wiki style="display:inline; border-bottom: 1px solid #f84" dark-style=" border-bottom: 1px solid #fc8"
[math(x)]가 3보다 크면}}}(A)
[math(x)]는 2보다 크거나 같다
(B). (단, [math(x)]는 자연수)
[math(x>3 \rightarrow x\ge2\quad (x\in\N))]

위 명제는 [math(x)]에 관계 없이 참이므로, 위 명제의 [math(x)]에 수를 대입해서 다음과 같이 만들어도 참이다.
[math(x)] 대입 후의 문장 상황
5 [math(5 > 3)](T) 이면 [math(5 \ge 2)](T)이다. TT
3 [math(2 > 3)](F) 이면 [math(2 \ge 2)](T)이다. FT
1 [math(1 > 3)](F) 이면 [math(1 \ge 2)](F)이다. FF

이와 같이 A와 B 모두 거짓인 경우에도 "A이면 B이다."([math(A \rightarrow B)])라는 문장은 참이며, [math(A \rightarrow B)]가 거짓인 상황은 A가 참이고 B가 거짓인 상황밖에 없다.

3.8. 동치 (EQV; ≡)

두 명제가 다 참이거나 다 거짓이면, 즉 두 명제의 진리값이 같으면 참값을 돌려준다. 배타적 논리합(XOR)의 부정이라고 할 수 있으므로 부정 배타적 논리합 또는 배타적 부정 논리합(XNOR, NXOR)이라고도 한다. 논리학에서는 기호 [math(\equiv)]를 사용하나, 논리곱의 아래에 밑줄을 그은 [math(\underline{\wedge})] 혹은 배타적 논리합 기호의 위에 밑줄을 그은 [math(\overline\veebar)]를 사용하기도 하고, 공학에서는 [math(⊙)]를 쓰기도 한다. EQV는 XOR와 달리 결합법칙이 성립하지 않는다.

수학적으로는 크로네커 델타([math(\delta_{ij} = \left\{\begin{matrix} 0 \; \; \; \text{if} \; \; \; i \neq j \\ 1 \; \; \; \text{if} \; \; \; i = j \end{matrix}\right.)])로 정의돼 있다. C언어 및 그 파생 언어에서 '='는 대입(:=)을 의미하므로 동치 연산자를 '=='로 표기한다. [math((A\underline{\wedge}B)= AB+A'B')]와 동치이다.
EQUIV([math(\equiv)])
[math(A)] [math(B)] [math(A\equiv B)]
T T T
T F F
F T F
F F T

4. 성질

공리(axiom) 또는 전제(postulation)라고도 부른다.

4.1. 항등원(identity)

[math(A\cdot 1 = A = 1\cdot A)]
[math(A+0 = A = 0+A)]

4.2. 연산 우선 순위

NOT > AND > OR 이다.
  • 부정(NOT) 연산은 AND와 OR보다 연산 우선 순위가 높다.
  • 대수학에서 곱셈 연산이 덧셈 연산보다 우선이듯이, 논리 연산에서도 논리곱(AND)이 논리합(OR) 보다 연산 순위가 높다.

분배법칙의 아래 두 식 중에 첫 번째 식의 우변에는 괄호가 없다. 이는 AND가 OR보다 연산 우선 순위가 높기 때문이다. 괄호가 생략된 것이라 보아도 되는데 [math(A\cdot B)]와 [math(A\cdot C)]에 대한 괄호의 존재 여부는 우변의 결과에 영향을 미치지 않는다.
[math(A\cdot (B+C)=A\cdot B+A\cdot C)]
[math(A+(B\cdot C)=(A+B)\cdot (A+C))]
[math(A\cdot (B+C)=(A\cdot B)+(A\cdot C)=A\cdot B+A\cdot C)]

4.3. 쌍대성 원리(principle of duality)

불 대수의 모든 등식에서 AND([math(\cdot)])와 OR([math(+)]), 그리고 0과 1을 서로 맞바꾸어도 그 등식은 여전히 성립한다는 원리이다. 불 대수의 정의로부터 도출되는 성질이며, 이렇게 변환된 식을 원래 식의 쌍대(Dual)라고 한다.

이 원리 때문에 후술할 '연산 법칙'의 수식들이 모두 쌍으로 존재한다.
  • 항등원: [math(A + 0 = A)] [math(\leftrightarrow)] [math(A \cdot 1 = A)]
  • 분배법칙: [math(A \cdot (B + C) = A \cdot B + A \cdot C)] [math(\leftrightarrow)] [math(A + (B \cdot C) = (A + B) \cdot (A + C))]

변환 방법은 다음과 같다.
  1. [math(\cdot)] (AND) [math(\leftrightarrow)] [math(+)] (OR)
    2. [math(1)] (True) [math(\leftrightarrow)] [math(0)] (False)
    3. 변수([math(A, B, ...)])는 그대로 둔다. (부정을 취하지 않는다)

드모르간 법칙과는 비슷해 보이지만 다르다. 드모르간 법칙은 변수까지 모두 부정(NOT)을 취하지만, 쌍대성 원리는 변수는 건드리지 않고 연산자와 항등원만 교체한다는 점에서 차이가 있다.
구분 수식
원본 식 [math(f(A, B, \cdot, +, 1, 0))]
쌍대(Dual) [math(f(A, B, +, \cdot, 0, 1))]
드모르간(Complement) [math(f(A', B', +, \cdot, 0, 1))]

5. 연산 법칙(law)

혼동 방지를 위해, 다음 기호만을 사용하여 표기한다.
연산 표기
NOT [math(')]
AND [math(\cdot)]
OR [math(+)]
XOR [math(\oplus)]

5.1. 교환법칙(commutative)

[math(A+B=B+A)]
[math(A\cdot B=B\cdot A)]
[math(A\oplus B = B\oplus A)]

NAND, NOR, EQV(NXOR)도 교환법칙이 성립한다.

5.2. 결합법칙(associative)

[math((A+B)+C=A+(B+C))]
[math((A\cdot B)C=A\cdot (B\cdot C))]
[math((A\oplus B)\oplus C = A\oplus (B\oplus C))]

동치 연산(EQV)이라고도 하는 NXOR을 포함하여, NAND, NOR 등 모든 부정 연산은 결합법칙이 성립하지 않는다.

5.3. 분배법칙(distributive)

[math(A\cdot (B+C)=A\cdot B+A\cdot C)]
[math(A+(B\cdot C)=(A+B)\cdot (A+C))]
[math(A\cdot (B\oplus C) = A\cdot B\oplus A\cdot C)]

논리연산의 분배법칙 결과는 [math(A+(B\cdot C)=(A+B)\cdot (A+C))]가 된다. 드모르간 법칙 하단의 설명을 보면 쉽게 이해할 수 있다.

5.4. 멱등법칙(idempotent)

[math(A\cdot A = A)]
[math(A + A = A)]

멱등성은 계산하려는 두 숫자가 똑같으면 결과도 그 똑같은 값이 나온다는 뜻이다. [math(A)]에 0을 대입했을 때도 성립하고 1을 대입했을 때도 성립하는 것으로 해당 성질을 증명할 수 있다.

nand, nor는 반대로 자기 자신과 연산하면 자기 자신의 부정이 나온다. 이것이 바로 nand, nor만으로 and, or, not을 모두 만들 수 있는 이유이기도 하다.

5.5. 흡수법칙(absorption)

[math(A+A\cdot B=A)]
[math(A\cdot (A+B)=A)]
전기 회로에서 곱연산을 직렬로, 합연산을 병렬로 생각해보면 이해가 쉽다. 아래 식에서 [math(B)]는 [math(A)]와 병렬이라서 [math(B)]가 끊어졌어도 [math(A)]가 이어져 있으면 그대로 전기가 흐르기 때문에 사실상 [math(B)]는 없는 것이나 다름없고, [math(A)]를 직렬로 두 개 단 것과 똑같기 때문에 식이 저렇게 [math(A)]로 흡수되는 것이다.

흡수법칙 식의 증명은 아래와 같다. 증명의 3행에 흡수법칙의 위쪽 식이 등장한다.
[math(\def\arraystretch{1.5} \begin{array}{clr}
&A \cdot (A+B) &\\
=&A \cdot A + A \cdot B &\because 분배법칙\\
=&A + A\cdot B &\because 동일법칙\ A\cdot A = A\\
=&A\cdot 1 + A\cdot B &\because 항등원\ A\cdot 1 = A\\
=&A\cdot (1 + B) &\because 분배법칙\\
=&A\cdot 1 &\because B + 1 = 1\\
=&A &\because 항등원\ A\cdot 1 = A\\
\end{array})]

5.6. 이중부정 법칙(involution)

[math((A')' = A)]

이 법칙을 이용하여 삼중부정 등 홀수 번 부정은 단일 부정과 같고, 이중부정, 사중부정 등 짝수 번 부정은 원래의 논리값과 같음을 알 수 있다.

5.7. 드모르간 법칙(de Morgan's)

[math((A \cdot B)'=A'+B')]
[math((A+B)'=A' \cdot B')]
식을 깔끔하게 정리할 때 가장 많이 사용되는데다가 NAND 연산, NOR 연산과 밀접한 연관이 있는 만큼 불 대수에서 상당히 중요하게 다뤄지는 성질이다. 오죽하면 대부분 교재에서 이 법칙 하나만 불 대수 파트에서 분리해서 따로 가르칠 정도.

사실 머리를 좀 굴려보면 AND와 OR은 같은 구조의 함수지만(항등원끼리 연산하면 항등원, 나머지 경우는 항등원이 아닌 것) AND는 항등원이 1(=0')이고 OR은 항등원이 0(=1')일 뿐이라는 걸 알 수 있는데, 다시 말해 NOT은 ({0 || 1}, AND)에서 ({0, 1}, OR)로 가는 isomorphism이다. 이중 부정규칙을 이용하면 동시에 NOT은 ({0 || 1}, OR)에서 ({0, 1}, AND)로 가는 isomorphism이므로 결론적으로 NOT은 ({0 || 1}, AND, OR)에서 ({0, 1}, OR, AND)로 가는(연산이 서로 바뀌었다) isomorphism이다.

이걸 이용해 드모르간 법칙을 쉽게 증명할 수 있을 뿐만 아니라 성질 항목에 나와있는 한쌍의 공식이 서로를 유도할 수 있다는 걸 쉽게 보일 수 있다.

5.8. 합의 법칙(consensus)

[math(AB + {\color{red}BC} + CA' = AB + CA')]
[math((A + B){\color{red}(B + C)}(C + A') = (A + B)(C + A'))]
불 대수에서 서로 다른 두 항이 동일한 변수의 긍정([math(A)])과 부정([math(A')])을 각각 포함하고 있을 때, 나머지 변수들로 이루어진 제3의 항([math(BC)], 합의항)은 논리적으로 불필요하여 소거할 수 있다는 정리이다. 식을 자세히 보면 가운데 마디가 사라진 것을 볼 수 있다.

수학적으로는 논리식의 간소화를 위해 사용되지만, 공학적 관점에서는 회로의 안정성을 확보하고 글리치(glitch)를 방지하기 위해 이 정리를 역으로 이용하여 합의항을 추가하기도 한다.

증명은 아래와 같다.
우선

[math(\def\arraystretch{1.5} \begin{array}{clr}
&BC&\\
=&1\cdot BC &\because 항등원\ A\cdot 1 = A\\
=&(A+A')\cdot BC &\because A+A' = 1\\
=&ABC+ A'BC &\because 분배법칙\\
=&ABC + CA'B &\because 교환법칙\end{array})]

임을 이용한다.

[math(\def\arraystretch{1.5} \begin{array}{clr}
&AB + BC + CA'&\\
=&AB + ABC + CA'B + CA'&\\
=&(AB+AB\cdot C) + (CA'\cdot B + CA') &\because 결합법칙\\
=&(AB + AB\cdot C) + (CA' + CA'\cdot B) &\because 교환법칙\\
=&AB + CA' &\because 흡수법칙\ A+A\cdot B = A\end{array})]
비슷한 방법으로 아래 식도 증명할 수 있다.
[math(\def\arraystretch{1.5} \begin{array}{clr}
&B+C&\\
=&0 + B + C &\because 항등원\ A+0 = A\\
=&A A' + B + C &\because A A' = 0\\
=&(A + B + C)(A' + B + C) &\because 분배법칙\\
=&(A + B + C)(C + A' + B) &\because 교환법칙\end{array})]

임을 이용한다.

[math(\def\arraystretch{1.5} \begin{array}{clr}
&(A + B)(B + C)(C + A')&\\
=&(A + B)(A + B + C)(C + A' + B)(C + A')&\\
=&(A + B)(A + B + C) \cdot (C + A' + B)(C + A') &\because 결합법칙\\
=&(A + B)(A + B + C) \cdot (C + A')(C + A' + B) &\because 교환법칙\\
=&(A + B)(C + A') &\because 흡수법칙\ A(A+B)=A\end{array})]

5.9. 흡수원(Absorbing Element)

[math(A+1=1)]
[math(A\cdot 0 = 0)]

논리곱에서는 0, 논리합에서는 1이 흡수원이다. 항등원은 논리곱이 1, 논리합이 0인 것과는 대조적이다.

5.10. 자신과 자신의 부정의 연산

[math(A + A' = 1)]
[math(A\cdot A' = 0)]

자신과 자신의 부정을 연산했을 때 항상 1이 되는 경우: or, nand, xor

자신과 자신의 부정을 연산했을 때 항상 0이 되는 경우: and, nor, eqv(xnor)

5.11. 기타 연산 법칙

[math((A\oplus B)' = A\oplus B' = A'\oplus B)]
[math(A'\oplus B' = A\oplus B)]
[math(A+A'\cdot B=A+B)]
[math(A\cdot (A'+B)=A\cdot B)]

증명은 다음과 같다.
[math(\def\arraystretch{1.5} \begin{array}{clr}
&A+A'\cdot B\\
=&A\cdot(B+1) + A'\cdot B &\because B+1=1\\
=&A\cdot B + A + A'\cdot B = 0\\
=&A+B\cdot(A+A')=A+B &\because A+A'=1\end{array})]

[math(\def\arraystretch{1.5} \begin{array}{clr}
&A\cdot (A'+B)&\\
=&A\cdot A' + A\cdot B &\because 분배법칙\\
=&0 + A\cdot B &\because A\cdot A' = 0\\
=&A\cdot B &\because 항등원\ 0 + A = A\end{array})]

6. 활용

수리논리학이나 컴퓨터과학에서는 두 개의 상태인 참(1, T, true)과 거짓(0, F, false)을 사용하는 연산을 불 연산(Boolean expression)이라 한다. 불 대수의 출현 이후로 논리학기호논리학의 성향이 강해지기 시작한다.

이산수학에서는 속(lattice) 중 complementary lattice이며 distributive lattice인 lattice를 불 속(Boolean lattice)이라 하며 이를 대수(algebra)식으로 나타낸 것을 불 대수(Boolean algebra)라고 한다. 불 속의 원소 개수는 해당 원자(atom) 개수 [math(n)]에 대해 [math(2^n)]개이다. 즉, 불 속의 원소 개수는 2의 제곱수대로 올라간다고 보면 된다.

프로그래밍에서는 조건에 의한 분기나 반복을 만드는 데 이용되고, 디지털 논리 회로를 배울 때 유용하게 사용된다. 디지털 회로의 신호는 0과 1로만 구성되어 있기 때문이다. 전자계통에선 논리 연산을 하는 소자를 게이트(gate)라고 하며 트랜지스터 여러 개를 조합해서 만들 수 있다. 이를 임의의 [math(k)]차 비트열에 대해 성립하도록 확장한 것이 비트 연산이다.

7. 기타

불 대수는 집합으로 해석할 수 있다. [math(A)], [math(B)], [math(C)] 등 문자를 전체집합 [math(U=\{0, 1\})]의 공집합이 아닌 진부분집합으로 생각할 때, 논리합(or)은 합집합으로, 논리곱(and)는 교집합으로, 부정(not)은 여집합으로[25][26], 배타적 논리합(xor)은 대칭차집합으로 생각할 수 있다.

8. 관련 문서

9. 둘러보기

수학기초론
Foundations of Mathematics
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
다루는 대상과 주요 토픽
수리논리학 논리 · 논증{귀납논증 · 연역논증 · 귀추 · 유추} · 정리(보조정리) · 공리 및 공준 · 증명{반증 · PWW · 자명함 · 귀류법 · 수학적 귀납법 · 더블 카운팅 · 자동정리증명(증명보조기)} · 논리함수 · 논리 연산 · 잘 정의됨 · 조건문(조각적 정의) · 명제 논리(명제 · 아이버슨 괄호 · · · 대우) · 양상논리 · 술어 논리(존재성과 유일성) · 형식문법 · 타입 이론 · 모형 이론
집합론 집합(원소 · 공집합 · 집합족 · 곱집합 · 멱집합) · 관계{이항 관계 · 동치관계} · 대칭성 · 순서론{순서 관계(부분 순서 · 하세 다이어그램) · 격자} · 순서쌍(튜플) · 함수 · 서수(큰 가산서수 · 초한귀납법) · 수 체계 · ZFC 공리계(선택공리) · NBG 공리계 · 기수(초한기수) · 초한수 · 절대적 무한 · 모임 · 첨수 집합족
범주론 범주(여러 가지 범주) · 함자 · 수반 · 자연 변환 · 모나드 · 쌍대성
계산 가능성 이론 계산 · 오토마타 · 튜링 머신 · 바쁜 비버 · 정지 문제 · 재귀함수
정리
드모르간 법칙 · 대각선 논법 · 러셀의 역설 · 초른의 보조정리 · 거짓말쟁이의 역설 · 뢰벤하임-스콜렘 정리 · 슈뢰더-베른슈타인 정리 · 퍼스의 법칙 · 굿스타인 정리 · 완전성 정리 · 불완전성 정리(괴델 부호화) · 힐베르트의 호텔 · 연속체 가설 · 퍼지 논리
기타
예비사항(약어 및 기호) · 추상화 · 동형(수학) · 벤 다이어그램 · 수학철학
틀:논리학 · 틀:이산수학 · 틀:이론 컴퓨터 과학 · 철학 관련 정보 · 논리학 관련 정보 · 수학 관련 정보 }}}}}}}}}


[[이론 컴퓨터 과학|'''이론 컴퓨터 과학
{{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#a36,#a36> 이론
기본 대상 수학기초론{수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학(그래프 이론) · 수치해석학 · 확률론통계학 · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버 · 디지털 물리학
오토마타 이론 FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어
계산 복잡도 이론 점근 표기법 · 튜링 기계^고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법, 분할 정복 알고리즘)
정보이론 정보 엔트로피 · 데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
프로그래밍 언어론 프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타프로그래밍 · 람다 대수 · 타입 이론 · 프로그래밍 언어 의미론 · 어휘 분석 · 파싱 · 구문 트리(완전 구문 트리 · 추상 구문 트리) · 컴파일러 이론
주요 알고리즘 및 자료구조
기초 정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현 배열^벡터^ · 리스트^연결 리스트^ · 셋(set) · 트리^이진 트리(레드-블랙 트리, ), B-트리, 피보나치 힙^ · · 스택
수학적 최적화 <keepall> 조합 최적화 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
<keepall> 볼록 최적화 내부점 방법 · 경사하강법
<keepall> 선형계획법 심플렉스법
계산 수론 및 암호학 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호 · 난수생성
<keepall> 대칭키 암호화 방식 블록 암호 알고리즘(파이스텔 네트워크 · DES · AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
<keepall> 공개키 암호화 방식 공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
계산기하학 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론 탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 }}}}}}}}}


<colkeepall>
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-5px -1px -11px"
<colbgcolor=#2707b9,#2707b9><colcolor=#fff> 학문 기반 학문
물리학 (전자기학 (회로이론 · 전자 회로 · 논리 회로) · 양자역학 · 물리화학 · 열역학 · 응집물질물리학) · 화학
연관 학문
수학 (공업수학 · 수치해석학 · 위상수학 · 미분방정식 · 대수학 (환론 · 표현론) · 선형대수학 · 이론 컴퓨터 과학 · 컴퓨터공학 (프로그래밍 언어 (HDL · VHDL · C · C++ · Java · 파이썬 · 베릴로그)) · 재료공학 · 제어 이론
공식 · 법칙 전자기 유도 · 가우스 법칙 · 비오-사바르 법칙 · 무어의 법칙 · 키르히호프의 법칙 · 맥스웰 방정식 · 로런츠 힘 · 앙페르 법칙 · 드모르간 법칙 · 페르미 준위 · 중첩의 원리
이론 · 연구 반도체 (P형 반도체 · N형 반도체) · 디스플레이 · 논리 회로 (보수기 · 가산기 · 플립플롭 · 논리 연산 · 비트 연산) · 전자 회로 · RLC 회로 · 역률 · DSP · 히스테리시스 곡선 · 휘트스톤 브리지 · 임베디드 시스템
용어 클럭 · ASIC · CPU 관련 (BGA · 마이크로아키텍처 · GPS · C-DRX · 소켓) · 전계강도계 · 축전기 · CMCI · 전송선 · 양공 · 도핑 · 이미터 · 컬렉터 · 베이스 · 시퀀스 · 헤테로다인
전기 · 전자
관련 정보
제품
스마트폰 · CPU · GPU (그래픽 카드) · ROM · RAM · SSD · HDD · MPU · CCD · eMMC · USB · UFS · LCD · LED · OLED · AMOLED · IoT · 와이파이 · 스마트 홈 · 마그네트론 · 마이크 · 스피커 · 배터리
소자
집적 회로 · 다이오드 · 진공관 · 트랜지스터 (BJT · FET · JFET · MOSFET · T-FT) · CMOS · IGBT · 저항기 · 태양전지 · 연산 증폭기 · 사이리스터 · GTO · 레지스터 · 펠티어 소자 · 벅컨버터
전기전자공학 교육 · 연구
관련 분야 제어공학 · 반도체공학 · 정보통신공학 · 전파공학 · 광공학
학과 전기전자공학과 · 반도체학과 · 정보통신학과 · 광공학과 · 원자력공학과
과목 공업수학 · 일반물리학 · 전자기학 · 회로이론 · 수치해석 · 프로그래밍 · 캡스톤 디자인
관련 기관 국가과학기술연구회(과학기술분야 정부출연연구기관)
자격증
전기 계열 기능사
전기기능사 · 철도전기신호기능사
기사·산업기사
전기기사 · 전기산업기사 · 전기공사기사 · 전기공사산업기사 · 전기철도기사 · 전기철도산업기사 · 철도신호기사 · 철도신호산업기사
기능장 및 기술사
전기기능장 · 건축전기설비기술사 · 발송배전기술사 · 전기응용기술사 · 전기안전기술사 · 철도신호기술사 · 전기철도기술사
전자 계열 기능사
전자기능사 · 임베디드기능사 · 전자캐드기능사
기사·산업기사
전자기사 · 전자산업기사
기능장 및 기술사
전자기능장 · 전자응용기술사
기타 기능사
신재생에너지발전설비기능사(태양광)
기사
소방설비기사 · 신재생에너지발전설비기사(태양광) · 로봇소프트웨어개발기사 · 로봇하드웨어개발기사 · 로봇기구개발기사
}}}}}}}}}

[[컴퓨터공학|'''컴퓨터 과학 및 공학
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height:calc(1lh + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px; word-break: keep-all"
<colbgcolor=#1282d7,#1282d7><colcolor=#fff,#fff> 기반 학문 수학(이산수학 · 수리논리학 · 선형대수학 · 대수학(환론 · 범주론) · 정수론 · 해석학 · 미적분학 · 미분방정식) · 이론 컴퓨터 과학(튜링 머신 · 정보이론 · 재귀 이론) · 암호학 · 전자공학 · 언어학(음운론 · 형태론 · 통사론 · 의미론 · 화용론) · 인지과학
하드웨어 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
시스템 컴퓨터 구조론 · 폰노이만 구조 · 마이크로아키텍처 · 논리 회로(논리 연산 · 카르노 맵 · 가산기 · 보수기 · 플립플롭) · FPGA · 하드웨어 가속 · 바이오스 · UEFI · ACPI · LinuxBoot · 운영체제(인터럽트 · 멀티태스킹 · 프로세스 스케줄링 · 뮤텍스 · 세마포어 · 데드락 · 식사하는 철학자 문제) · 네트워크(네트워크 포트) · 대역폭 · 와이파이 · gRPC · GPS · 임베디드 시스템 · 사물인터넷 · 슈퍼컴퓨터 · 양자 컴퓨터
소프트웨어 시간 복잡도(최적화) · 이진 탐색 · 난수생성 · 컴퓨터 언어 · 기계어 · 어셈블리어 · 프로그래밍 언어(타입 이론 · 어휘 분석 · 파싱 · 컴파일러(어셈블러 · JIT) · 인터프리터 · 링커 · 난해한 프로그래밍 언어) · 마크업 언어 · 프로그래밍 패러다임(절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍) · 데이터베이스(DBMS · NoSQL) · 메타데이터 · 인코딩(유니코드 · MBCS) · 소프트웨어 개발 방법론(애자일 · 워터폴) · 디자인 패턴 · 행위자 모델 · 놀람 최소화 원칙 · 버전(버전 관리 시스템) · 프레임워크 · 라이브러리 · 모듈 · API · ABI
응용 인공지능 · 기계학습 · 인공신경망 · 딥러닝 · 자연어 처리(기계 번역 · 음성인식) · 컴퓨터 비전 · OCR · 빅데이터 · 컴퓨터 그래픽스 · OpenGL · EXIF · HCI · UI · UX · 컴퓨터 보안 · 해킹 · 리버스 엔지니어링 · 해시(SHA · salt · 브루트 포스 · 레인보우 테이블 · 암호화폐) · 디피-헬만 키 교환 · RSA 암호화 · ROT13 · 일회용 비밀번호
}}}}}}}}} ||
[1] 장음과 단음을 구별하는 구식 표기로 "부울"이라고 표기하는 경우도 있으나, 1986년 외래어 표기법 개정 이후 국어 규범 표기는 "불"이며 실제 발음 차이도 거의 없다.[2] 어원은 아니지만 원소가 두 개(binary)뿐인 집합이라는 의미도 함의하고 있어 영어권에선 해당 기호가 훨씬 직관적이다.[3] not OR[4] not AND[5] exclusive OR[6] equivalent 또는 배타적 부정 논리합(XNOR, exclusive not OR)[7] converse[8] not IMP[9] converse nonimplication[10] 임의의 변수(또는 상수)가 이미 지정된 것과 유사하지만 구분할 필요가 있을 때 사용되기도 하며, 해석학에서는 도함수 기호로, 경제학 등 응용 쪽에서 실수체 위의 전치행렬 기호로도 쓰이는 등 중구난방이므로 이 표기법은 주의해서 사용해야 한다.[11] 연산 결과가 변수 자신과 같음[12] 경우에 따라 논리곱이 아니라 비트곱 연산자일 때도 있다. 단, 진리값을 0과 1로 정의한 경우 비트곱과 논리곱 연산은 동치가 된다.[13] 경우에 따라 논리곱이 아니라 비트곱 연산자일 때도 있다. 단, 진리값을 0과 1로 정의한 경우 비트곱과 논리곱 연산은 동치가 된다.[14] or의 중의성으로 인해, 수리논리학에서는 이 문서의 맥락으로 or를 사용한다고 약속했다.[15] 경우에 따라 논리합이 아니라 비트합 연산자일 때도 있다. 단, 진리값을 0과 1로 정의한 경우 비트합과 논리합 연산은 동치가 된다.[16] [math(A \boldsymbol{\text{ or }} B)][17] [math(p\uparrow p=\neg p, (p\uparrow q)\uparrow (p\uparrow q)=p\wedge q,(p\uparrow p)\uparrow (q\uparrow q)=p\vee q)][18] ((not A) and B) or (A and (not B))[19] (A or B) and not(A and B)로 표현할 수도 있다.[20] 이 기호는 선형대수학에서 직합을 의미하기도 한다.[21] C언어에서 제곱은 math.h라는 헤더 파일을 include(포함)하고(<math.h>), pow(밑, 지수) 함수를 사용하면 가능하다.[22] PHP 5.6 이상이나 Python 등의 언어에서는 또 **로 지수를 표현하는 것이 가능하다.[23] 예를 들어, AX라는 레지스터를 0으로 초기화 할 땐 MOV AX,0을 써도 되지만 XOR AX,AX를 해도 된다는 의미이다. AX에 뭔 값이 들어있는지는 알 수 없지만, 같은 것끼리 연산시키면 무조건 0을 반환하는 XOR의 특성 상 해당 연산의 결과는 AX의 원래 값과는 상관 없이 항상 0이 된다.[24] [math(A=A\veebar B)]; [math(B=A\veebar B)]; [math(A=A\veebar B)][25] 단, 0을 원소로 가지는 집합끼리의 교집합은 공집합이므로, 교집합을 논리곱(and)이라고 하려면 공집합 또한 0으로 보아야 한다.[26] 이 방법을 통해 드모르간 법칙이 불 대수에서 성립함을 직접적 증명 없이 이해할 수 있다.