논리합
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
논리합은 두 명제 중 적어도 하나가 참일 때 참이 되는 논리 연산으로, 기호 '∨'로 표기하며, 'OR'이라고도 한다. 논리합은 논리학, 컴퓨터 과학, 집합론, 자연어 처리 등 다양한 분야에서 활용되며, 참 또는 거짓의 진리값을 갖는 두 명제 P, Q에 대해 P ∨ Q는 P와 Q 중 적어도 하나가 참일 때 참이 된다. 프로그래밍 언어에서는 `|`, `||`, `or` 등으로 표현되며, 비트 연산, 조건문 등에 사용된다. 집합론에서는 합집합과 관련되며, 자연어에서는 '또는'으로 표현되지만, 문맥에 따라 배타적 논리합으로 해석될 수 있다.
논리합은 두 명제 중 적어도 하나가 참일 때 참이 되는 논리 연산이다. 일상생활에서 사용하는 "또는"이라는 단어의 의미와 유사하다. 예를 들어, "내 키는 160cm 이상이다."와 "내 몸무게는 50kg 이상이다."라는 두 명제가 있을 때, 이 두 명제의 논리합은 "내 키는 160cm 이상이거나 내 몸무게는 50kg 이상이다."가 된다.
2. 정의 및 표기법
논리합은 '∨' 기호로 표기한다. 예를 들어, 명제 P와 Q의 논리합은 P ∨ Q와 같이 나타낸다.[1] 이 외에도 전자공학에서는 '+' 기호를 사용하기도 하며, 여러 프로그래밍 언어에서는 `|` 또는 `||`를 사용하기도 한다. 얀 우카시에비치의 폴란드 표기법에서는 "alternatywa"(대안)의 약자인 'A'를 사용하기도 한다.[4]
여러 요소의 논리합은 (유니코드 ) 기호를 사용하여 나타낼 수 있다.[5] 예를 들어, a1, a2, ..., an의 논리합은 다음과 같이 표현한다.
:
영어에서는 "or"를 사용하며, 때로는 "and/or" 구문을 사용하여 두 명제가 모두 참인 경우를 명확히 하기도 한다.
2. 1. 진리표
명제 P | 명제 Q | P ∨ Q |
---|---|---|
참 | 참 | 참 |
참 | 거짓 | 참 |
거짓 | 참 | 참 |
거짓 | 거짓 | 거짓 |
2. 2. 다른 연산자와의 관계
''P'' ∨ ''Q''는 부정과 논리곱을 사용하여 ¬(¬''P'' ∧ ¬''Q'')로 나타낼 수 있다. 따라서, 논리합은 부정과 논리곱으로 표현할 수 있다.[6]: ''P'' ∨ ''Q'' = ¬(¬''P'' ∧ ¬''Q'')
반대로, 논리곱은 논리합과 부정으로 나타낼 수 있다.
: ''P'' ∧ ''Q'' = ¬(¬''P'' ∨ ¬''Q'')
이 두 가지를 드 모르간의 법칙이라고 한다.
고전 논리 체계에서 논리합이 기본 연산자가 아닌 경우, 논리곱(∧)과 논리 부정(¬)을 사용하여 다음과 같이 정의할 수 있다.[6]
: A ∨ B = ¬(¬A ∧ ¬B)
또는 함축(→)과 ¬을 사용하여 정의할 수도 있다.[6]
: A ∨ B = (¬A) → B
또한 → 만을 사용하여 정의할 수도 있다.
: A ∨ B = (A → B) → B
3. 성질
- 결합 법칙[7]
- 교환 법칙
- 분배 법칙
- *
- *
- 멱등성
- 단조성
- '''진리 보존''': 모든 변수에 '참'의 진리값을 할당하는 해석은 논리합의 결과로 '참'의 진리값을 생성한다.
- '''거짓 보존''': 모든 변수에 '거짓'의 진리값을 할당하는 해석은 논리합의 결과로 '거짓'의 진리값을 생성한다.
3. 1. 결합 법칙
결합 법칙[7]: (P ∨ Q) ∨ R ≡ P ∨ (Q ∨ R)3. 2. 교환 법칙
교환 법칙: [7]3. 3. 분배 법칙
[7][7]
3. 4. 멱등 법칙
멱등 법칙: [7]3. 5. 단조성
논리합은 다음과 같은 성질을 가진다.:
4. 다양한 분야에서의 응용
프로그래밍 언어에서 논리합은 대부분 연산자로 표현되며,[8][9] 비트 연산에 자주 활용된다. 예를 들면 다음과 같다.
- 0 또는 0 = 0
- 0 또는 1 = 1
- 1 또는 0 = 1
- 1 또는 1 = 1
- 1010 또는 1100 = 1110
`or` 연산자는 비트 필드에서 특정 비트를 1로 설정할 때 유용하다. 예를 들어 `x = x | 0b00000001`은 x의 마지막 비트를 1로 설정하고 나머지 비트는 그대로 유지한다.
C 계열 언어에서는 비트 단위 논리합 연산자로 단일 파이프(
|
)를, 논리합 연산자로 이중 파이프(||
)를 사용한다. 논리합 연산은 단락 회로 평가를 따르므로, 첫 번째 피연산자가 `true`이면 두 번째 피연산자는 평가하지 않는다. 병렬 언어에서는 양쪽 피연산자를 병렬로 평가하여 하나라도 `true`이면 다른 쪽 평가를 중단하는 '병렬 or' 연산이 가능하다.집합론에서 합집합의 원소 소속 여부는 논리합으로 정의된다. 즉, x ∈ A ∪ B는 (x ∈ A) ∨ (x ∈ B)와 같다.[11]
자연어에서 '또는'은 배타적 논리합으로 해석될 수 있어 주의해야 한다.[1] 예를 들어 "커피 또는 홍차가 제공됩니다"는 보통 둘 중 하나만 제공됨을 의미한다.
4. 1. 컴퓨터 과학
대부분의 프로그래밍 언어에 논리합에 해당하는 연산자가 존재한다.[8][9] 논리합은 종종 비트 연산에 사용된다. 예시는 다음과 같다.- 0 또는 0 = 0
- 0 또는 1 = 1
- 1 또는 0 = 1
- 1 또는 1 = 1
- 1010 또는 1100 = 1110
`or` 연산자는 비트 필드의 비트를 1로 설정하는 데 사용될 수 있다. 비트를 1로 설정해야 하는 관련 비트가 있는 상수 필드와 `or` 연산을 수행하면 된다. 예를 들어, `x = x | 0b00000001`은 마지막 비트를 1로 만들고 다른 비트는 변경하지 않는다.
많은 언어는 비트 단위 논리합과 논리합을 구별하기 위해 두 개의 별개의 연산자를 제공한다. C를 따르는 언어에서, 비트 단위 논리합은 단일 파이프 연산자(
|
)로 수행되며, 논리합은 이중 파이프(||
) 연산자로 수행된다.논리합은 일반적으로 단락 회로 평가된다. 즉, 첫 번째(왼쪽) 피연산자가 `true`로 평가되면, 두 번째(오른쪽) 피연산자는 평가되지 않는다. 따라서 논리합 연산자는 일반적으로 시퀀스 포인트를 구성한다.
병렬(동시) 언어에서는 양쪽을 단락 회로 평가하는 것이 가능하다. 즉, 양쪽을 병렬로 평가하고, 하나가 true 값을 반환하면 다른 쪽이 중단된다. 따라서 이 연산자는 ''병렬 or''이라고 불린다.
논리합 표현식의 유형은 대부분의 언어에서 부울(Boolean)이며(따라서 `true` 또는 `false` 값만 가질 수 있음), 일부 언어(예: 파이썬 및 자바스크립트)에서는 논리합 연산자가 피연산자 중 하나를 반환한다. 즉, 첫 번째 피연산자가 참 값으로 평가되면 첫 번째 피연산자를 반환하고, 그렇지 않으면 두 번째 피연산자를 반환한다. 이를 통해 엘비스 연산자의 역할을 수행할 수 있다.
C 언어 등에서는 단순한 논리합은 `||`, 비트 단위 논리합은 `|`로 표기하며, `z = x | y;`와 같이 사용된다. (주: `2|4`의 값은 `6`이지만, `2||4`의 값은 `1`이다.)
Perl에서도 단순한 논리합은 `||`, 비트 단위 논리합은 `|`로 표기하며, `$z = $x | $y;`와 같이 사용된다. (주: `2|4`의 값은 `6`이지만, `2||4`의 값은 C 언어의 경우와는 달리 `2`이다.)
VBScript에서는 " `Or` "로 표기하며, `z = x Or y`와 같이 사용된다.
각 프로그래밍 언어에서의 논리합 표기와 의미는 단락 회로 평가와 밀접한 관련이 있다.
4. 2. 집합론
집합론에서 합집합 원소의 소속은 논리적 논리합의 관점에서 정의된다. x ∈ A ∪ B는 (x ∈ A) ∨ (x ∈ B)와 같다.[11] 이 때문에 논리적 논리합은 결합 법칙, 교환 법칙, 분배 법칙, 드 모르간의 법칙과 같은 집합론적 합집합과 동일한 항등식을 많이 만족하며, 논리곱을 집합의 교집합과, 논리 부정을 여집합과 동일시한다.[11]4. 3. 자연어 처리
자연어에서 '또는'은 배타적 논리합으로 해석될 수 있으므로, 문맥에 따라 주의해야 한다.[1] 예를 들어, "커피 또는 홍차가 제공됩니다"라는 문장은 보통 커피와 홍차 중 하나만 제공된다는 의미로 해석되며, 둘 다 제공되는 경우는 포함하지 않는다.영어에서는 'and/or'라는 구문을 사용하여 둘 다 참인 경우를 명시적으로 포함하기도 한다. 일상 대화에서 "또는"은 배타적 논리합을 의미하는 경우가 있지만, 통상적인 논리합은 "포괄적 논리합"(inclusive OR영어)이라고 부른다.[1]
5. 기타
폴란드 표기법에서 논리합 연산자는 'A'로 표기된다.[4] 유니코드에서 논리합 기호(∨)는 U+2228이다.[1]
참조
[1]
간행물
Disjunction
https://plato.stanfo[...]
Metaphysics Research Lab, Stanford University
2016
[2]
웹사이트
Disjunction {{!}} logic
https://www.britanni[...]
2020-09-03
[3]
서적
Logic: the basics
Routledge
2010
[4]
문서
A Précis of Mathematical Logic
D. Reidel
1959
[5]
웹사이트
OR
https://mathworld.wo[...]
2024-09-24
[6]
서적
Introduction to Mathematical Logic
https://www.worldsci[...]
WORLD SCIENTIFIC
2016
[7]
서적
Logic with trees: an introduction to symbolic logic
Routledge
1997
[8]
웹사이트
Python 3.12.1 Documentation - The Python Language Reference - 6.11 Boolean operations
https://docs.python.[...]
2023-12-25
[9]
웹사이트
JavaScript References - Expressions & Operators - Logical AND (&&)
https://developer.mo[...]
2023-12-25
[10]
학술지
Context-Free Language Theory Formalization
[11]
서적
Einführung in die Mengenlehre
Springer
2021
[12]
서적
論理学史
岩波書店
[13]
서적
論理学概論
岩波書店
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com