Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

OR (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.24 07:38

OR

정의

논리 연산자 중 하나로, 두 개 이상의 조건 중 하나 이상이 참(true)이면 전체 결과가 참이 되는 연산

기호/표기

|| (이중 수직선)

∨ (논리합 기호)

OR (영문)

논리적 의미

논리합(Disjunction)

진리표

A | B | A OR B

0 | 0 | 0

0 | 1 | 1

1 | 0 | 1

1 | 1 | 1

주요 용도

프로그래밍에서 조건 분기

디지털 논리 회로 설계

데이터베이스 검색 쿼리

일상적 의사 결정 논리

상세 정보

배타적 OR (XOR)

두 입력이 서로 다를 때만 참을 반환하는 연산

단락 평가

대부분의 프로그래밍 언어에서 OR 연산은 첫 번째 조건이 참이면 두 번째 조건을 평가하지 않음

관련 연산자

AND (논리곱)

NOT (논리부정)

XOR (배타적 논리합)

1. 개요

OR은 논리 연산자 중 하나로, 논리합(Disjunction)이라고도 불린다. 두 개 이상의 명제나 조건 중 적어도 하나가 참(true)일 경우 전체 결과가 참이 되는 연산을 의미한다. 이는 일상적인 언어에서 "또는", "혹은"에 해당하는 개념으로, 다양한 분야에서 의사 결정이나 조건 판단의 기본 도구로 활용된다.

주요 기호로는 수학 및 논리학에서 사용하는 ∨ 기호와, 대부분의 프로그래밍 언어에서 채택한 이중 수직선(||)이 있다. 영문으로는 그대로 OR이라고 표기한다. 이 연산의 동작은 진리표를 통해 명확히 정의되는데, 두 입력값 A와 B가 모두 거짓(false)인 경우를 제외하고는 결과가 항상 참이 된다.

OR 연산자는 프로그래밍에서 조건문과 반복문을 작성할 때 핵심적으로 사용되며, 데이터베이스에서는 SQL 쿼리의 WHERE 절에서 검색 조건을 확장하는 데 필수적이다. 또한 디지털 논리 회로의 설계에서는 논리 게이트의 기본 구성 요소로 구현되어 컴퓨터의 중앙 처리 장치나 다양한 전자 기기의 동작을 결정한다.

이처럼 OR은 인공지능의 추론 시스템부터 일반인의 일상적 선택에 이르기까지, 논리적 사고가 필요한 광범위한 영역에서 공통적으로 적용되는 근본적인 연산 개념이다.

2. 논리 연산자로서의 OR

2.1. 기호와 표기법

논리 연산자로서의 OR은 여러 가지 기호와 표기법으로 표현된다. 가장 일반적으로는 프로그래밍 언어와 디지털 논리 회로 설계에서 사용되는 이중 수직선 || 기호가 있다. 이 표기는 C (프로그래밍 언어)와 자바를 비롯한 많은 현대 프로그래밍 언어에서 표준으로 채택되어 조건문의 조건 분기에 활용된다.

수학과 형식 논리의 영역에서는 논리합을 의미하는 ∨ 기호를 주로 사용한다. 이 기호는 명제 논리나 부울 대수에서 두 명제의 논리합을 표기할 때 쓰인다. 또한 영어 단어 "OR" 그 자체도 논리 연산을 설명하는 데 흔히 사용되는 표기법이다.

일상적인 문서나 의사 결정 논리를 기술할 때는 "또는", "혹은"과 같은 자연어 표현이 OR의 의미로 기능하기도 한다. 이러한 다양한 표기법은 모두 동일한 논리적 의미, 즉 두 개 이상의 명제 중 하나 이상이 참일 때 전체 결과가 참이 된다는 논리합의 개념을 지칭한다.

2.2. 진리표

논리 연산자로서의 OR의 동작을 명확히 정의하는 가장 기본적인 도구는 진리표이다. 진리표는 입력 변수(논리 변수)의 모든 가능한 조합에 대해 논리 연산의 결과값을 보여주는 표이다. OR 연산은 두 개의 입력을 기준으로 정의되며, 입력값은 참(True) 또는 거짓(False)으로 표현된다.

OR 연산의 진리표는 다음과 같다. 여기서 1은 참을, 0은 거짓을 의미한다.

입력 A

입력 B

A OR B

0

0

0

0

1

1

1

0

1

1

1

1

이 표는 OR 연산의 핵심인 "하나 이상의 입력이 참이면 결과도 참이다"라는 규칙을 보여준다. 즉, 두 입력이 모두 거짓(0)인 경우에만 결과가 거짓(0)이 되고, 나머지 세 가지 경우(입력 A만 참, 입력 B만 참, 둘 다 참)에는 결과가 항상 참(1)이 된다. 이는 포괄적 논리합의 전형적인 특징이다.

이 진리표는 디지털 논리 회로에서 논리 게이트의 동작을 설계하거나, 프로그래밍 언어에서 조건문을 작성할 때 논리적 판단의 기준이 된다. 또한 명제 논리에서 복합 명제의 진리값을 분석하는 기초가 된다.

2.3. 프로그래밍에서의 구현

대부분의 프로그래밍 언어는 논리 연산자 OR을 지원하며, 주로 키워드 OR이나 기호 ||를 사용하여 표현한다. 이 연산자는 조건문이나 반복문 내에서 복합 조건을 구성할 때 핵심적인 역할을 한다. 예를 들어, if (age < 20 OR age >= 65)와 같은 조건은 나이가 20세 미만이거나 65세 이상인 경우를 모두 참으로 평가하여 특정 코드 블록을 실행하게 만든다. 이는 프로그램의 흐름을 유연하게 제어하는 데 필수적이다.

프로그래밍에서의 OR 연산은 단락 평가라는 중요한 특징을 가진다. 이는 왼쪽 피연산자를 먼저 평가하고, 그 결과가 참이면 오른쪽 피연산자의 평가 없이 즉시 전체 표현식을 참으로 결정하는 최적화 방식이다. 예를 들어, if (pointer != NULL OR pointer->value > 10)과 같은 코드에서, pointer가 NULL이 아니라면 첫 번째 조건이 참이 되어 두 번째 조건(pointer->value)은 평가되지 않는다. 이는 널 포인터 역참조로 인한 런타임 오류를 방지하는 안전장치 역할을 하기도 한다.

OR 연산자는 비트 연산에서도 사용되며, 이때는 일반적으로 단일 수직선 기호 |로 표기한다. 논리 OR이 참과 거짓을 다루는 반면, 비트 OR 연산은 두 정수의 각 비트 자리를 독립적으로 비교하여 하나라도 1이면 결과 비트를 1로 설정한다. 이는 플래그 값을 결합하거나 특정 비트를 설정할 때 유용하게 쓰인다. 따라서 프로그래밍 언어는 문맥에 따라 논리 OR(||)과 비트 OR(|)을 구분하여 제공한다.

3. 데이터베이스 쿼리에서의 OR

3.1. SQL WHERE 절의 사용

SQL의 WHERE 절에서 OR 연산자는 여러 조건 중 하나라도 만족하는 행을 결과 집합에 포함시키기 위해 사용된다. 이는 데이터베이스에서 특정 기준에 맞는 데이터를 유연하게 검색할 때 핵심적인 역할을 한다. 예를 들어, 특정 지역에 거주하거나 특정 연령대에 속하는 고객을 찾는 쿼리에서 OR 연산자를 활용할 수 있다.

OR 연산자는 AND 연산자와 함께 복합적인 조건을 구성하는 데 자주 사용된다. 이때 연산자 우선순위에 주의해야 하는데, 일반적으로 AND가 OR보다 우선순위가 높다. 따라서 의도하지 않은 결과를 방지하기 위해 괄호를 사용하여 조건의 그룹화를 명시적으로 표현하는 것이 좋다. 예를 들어, (조건1 OR 조건2) AND 조건3과 같은 형태로 작성한다.

연산자

설명

예시 (WHERE 절)

OR

연결된 조건 중 하나 이상이 참이면 참

WHERE city = '서울' OR age >= 30

AND

연결된 모든 조건이 참이어야 참

WHERE city = '서울' AND age >= 30

이 연산자는 SELECT 문뿐만 아니라 UPDATE 문이나 DELETE 문에서도 조건을 지정할 때 동일하게 적용된다. 데이터베이스 시스템은 OR 조건을 평가할 때, 주어진 조건들 중 첫 번째 참 조건이 발견되면 나머지 조건의 평가를 생략하는 단축 평가를 수행할 수 있다. OR 연산자의 이러한 특성은 데이터 필터링과 정보 검색을 효율적으로 만드는 기반이 된다.

3.2. 집합 연산으로서의 OR

데이터베이스 쿼리, 특히 SQL의 맥락에서 OR 연산자는 집합 연산의 관점으로도 이해할 수 있다. WHERE 절에서 'A OR B'라는 조건은, 조건 A를 만족하는 모든 레코드의 집합과 조건 B를 만족하는 모든 레코드의 집합을 합친 합집합을 결과로 반환한다. 이는 논리 연산자로서의 OR의 정의와 일치하며, 데이터의 필터링 과정을 집합론적 관점에서 시각화하는 데 도움이 된다.

예를 들어, '직업이 "개발자" OR "디자이너"인 직원'을 찾는 쿼리는, '개발자' 집합과 '디자이너' 집합에 속한 모든 구성원을 포함하는 하나의 큰 집합을 생성한다. 이때 두 조건을 모두 만족하는 요소, 즉 교집합에 해당하는 경우(한 사람이 개발자이면서 동시에 디자이너인 경우)도 결과 집합에 단 한 번 포함된다. 이는 OR 연산이 포괄적 논리합의 성질을 가짐을 보여준다.

이러한 집합 연산으로서의 접근법은 복잡한 쿼리를 설계하거나 데이터 마이닝에서 여러 기준을 결합할 때 유용하다. AND 연산자가 집합의 교집합을 생성하는 것과 대비되어, OR는 조건의 범위를 넓히고 결과 집합의 크기를 증가시키는 역할을 한다. 따라서 정보 검색 시스템이나 비즈니스 인텔리전스 도구에서 사용자가 다양한 가능성을 포괄적으로 검색할 때 핵심적인 연산자가 된다.

4. 일상 언어 및 추론에서의 OR

4.1. 포괄적 OR (Inclusive OR)

일상 언어 및 추론에서 사용되는 포괄적 논리합은 두 개 이상의 진술 중 적어도 하나가 참일 경우 전체 진술을 참으로 판단하는 논리 연산이다. 이는 배타적 논리합과 구분되는 개념으로, 흔히 "A 또는 B"라고 말할 때 자연스럽게 사용되는 의미에 해당한다. 예를 들어, "내일 비가 오거나 바람이 강하게 분다"라는 진술은 비가 오기만 하거나, 바람만 강하게 불거나, 두 조건이 모두 충족될 때 모두 참으로 인정된다.

이러한 포괄적 OR은 논리학에서 논리합이라고 불리며, 기호로는 ∨를 사용하여 표기한다. 진리표에 따르면, 두 명제 A와 B가 모두 거짓인 경우를 제외하고는 결과가 항상 참이 된다. 이 연산은 일상적인 합리적 추론과 의사 결정의 기초를 형성하며, 여러 가능성 중 하나라도 성립하면 결론을 내리는 패턴을 반영한다.

프로그래밍 언어와 데이터베이스 쿼리에서의 OR 연산자(예: || 또는 OR)는 바로 이 포괄적 논리합을 구현한 것이다. 또한 디지털 논리 회로에서는 OR 게이트라는 논리 소자를 통해 이 개념이 물리적으로 구현되어, 복잡한 전자 장치의 동작을 제어하는 기본 구성 요소로 활용된다.

4.2. 배타적 OR (Exclusive OR)

배타적 논리합은 두 개의 입력값이 서로 다를 때만 참을 반환하는 논리 연산이다. 흔히 XOR로 줄여 부르며, 배타적 논리합이라는 이름은 두 조건 중 '오직 하나만' 참이어야 한다는 배타적 성질에서 유래한다. 이 연산은 포괄적 논리합과 구분되는 개념으로, 특히 디지털 회로 설계나 특정 암호학 알고리즘에서 중요한 역할을 한다.

배타적 논리합의 진리표는 다음과 같다. 입력 A와 B가 모두 거짓이거나 모두 참일 경우 결과는 거짓이며, 두 값이 서로 다를 때만 참이 된다.

A

B

A XOR B

0

0

0

0

1

1

1

0

1

1

1

0

일상 언어에서 "또는"이라는 표현은 모호할 수 있어, 배타적 의미인지 포괄적 의미인지 문맥에 따라 해석해야 한다. 예를 들어, "디저트로 커피 또는 차를 드시겠습니까?"라는 질문은 일반적으로 배타적 논리합을 의미한다. 반면, 프로그래밍 언어나 디지털 논리에서는 연산자 기호(예: ^, ⊕)를 통해 명확히 구분하여 사용한다.

5. 기타 분야에서의 활용

5.1. 검색 엔진 (OR 연산자)

검색 엔진에서 OR 연산자는 사용자가 입력한 여러 검색어 중 하나라도 포함된 문서를 결과로 찾아주는 역할을 한다. 이는 불리언 검색의 기본 연산자 중 하나로, 검색 범위를 넓히고자 할 때 사용된다. 예를 들어 '사과 OR 배'로 검색하면 사과에 대한 내용이 담긴 문서와 배에 대한 내용이 담긴 문서가 모두 검색 결과에 나타난다. 이 방식은 특정 주제의 대체어나 유의어를 함께 검색하거나, 관련된 여러 개념을 포괄적으로 조사할 때 유용하다.

대부분의 주요 검색 엔진과 학술 데이터베이스는 고급 검색 모드나 검색어 사이에 대문자 'OR'을 직접 입력하는 방식으로 이 연산자를 지원한다. 일부 검색 엔진에서는 수직선 기호(|)를 OR 연산자로 사용하기도 한다. 이 연산자의 사용은 검색 결과의 양을 증가시키는 대신, 정확도는 상대적으로 낮아질 수 있다는 특징이 있다. 따라서 보다 정밀한 검색을 위해서는 AND 연산자나 NOT 연산자, 그리고 검색 필터 기능과 함께 조합하여 사용하는 것이 일반적이다.

5.2. 회로 설계 (논리 게이트)

논리 게이트 설계에서 OR 연산은 논리합을 구현하는 기본적인 디지털 회로 구성 요소이다. OR 게이트는 두 개 이상의 이진 입력 신호 중 하나 이상이 논리 '1'(높은 전압)일 때, 출력 신호가 논리 '1'이 되는 기능을 수행한다. 이는 불 대수의 덧셈 연산과 동일하며, 디지털 시스템에서 다양한 조합 논리 회로를 구성하는 데 필수적으로 사용된다.

OR 게이트는 트랜지스터, 다이오드 또는 집적 회로를 이용하여 물리적으로 구현된다. 가장 기본적인 형태는 TTL이나 CMOS 같은 반도체 기술을 바탕으로 하며, 진리표에 명시된 논리 관계를 정확히 따르도록 설계된다. 여러 개의 OR 게이트는 가산기, 멀티플렉서, 인코더와 같은 복잡한 논리 회로를 만드는 데 조합되어 활용된다.

입력 A

입력 B

출력 (A OR B)

0

0

0

0

1

1

1

0

1

1

1

1

논리 회로 설계에서 OR 게이트는 종종 AND 게이트 및 NOT 게이트와 함께 사용되어 원하는 논리 함수를 완성한다. 또한, 배타적 논리합인 XOR 게이트를 구성하는 데에도 OR 게이트가 기초 부품으로 쓰인다. 이처럼 OR 연산은 컴퓨터의 중앙 처리 장치 내부부터 다양한 전자 제품의 제어 로직에 이르기까지 디지털 정보 처리의 핵심을 이루는 개념이다.

6. 관련 개념 및 연산자

6.1. AND

AND는 논리 연산자 중 하나로, 두 개 이상의 조건이 모두 참(true)일 때만 전체 결과가 참이 되는 연산이다. 이는 모든 조건의 동시 만족을 요구하는 논리적 연결을 의미하며, 논리곱(Conjunction)이라고도 불린다. 프로그래밍과 데이터베이스 쿼리, 디지털 논리 회로 설계 등 다양한 분야에서 기본적인 구성 요소로 활용된다.

주요 기호와 표기법으로는 이중 앰퍼샌드 &&, 논리곱 기호 ∧, 그리고 영문 AND가 널리 사용된다. 진리표를 통해 그 동작을 명확히 정의할 수 있으며, 두 입력 A와 B가 모두 1(참)일 때만 출력이 1이 된다. 다른 모든 경우, 즉 하나라도 0(거짓)이면 결과는 0이 된다.

SQL의 WHERE 절에서 AND 연산자는 여러 검색 조건을 결합하여 모든 조건을 동시에 만족하는 행만을 필터링할 때 사용된다. 예를 들어, 특정 도시에 거주하면서 특정 나이 이상인 고객을 찾는 쿼리에서 핵심 역할을 한다. 이는 집합 연산 관점에서 교집합(Intersection)에 해당한다.

일상 언어와 추론에서 "그리고"에 해당하는 AND는 포괄적 의미로 사용된다. 여러 전제가 모두 참일 때 결론이 성립하는 연역적 추론의 기초를 이룬다. 또한 검색 엔진에서는 검색어를 연결하여 모든 키워드를 포함하는 결과를 좁혀 찾는 데 사용되며, 논리 게이트에서는 AND 게이트로 구현되어 기본적인 디지털 회로를 구성한다.

6.2. NOT

논리 연산자로서의 NOT은 주어진 명제나 조건의 진리값을 반전시키는 역할을 한다. 이 연산은 단항 연산자로, 하나의 입력에 대해서만 작동한다. 어떤 명제 P가 참(True)이면 NOT P는 거짓(False)이 되고, P가 거짓이면 NOT P는 참이 된다. 이는 논리적 부정을 수행하는 가장 기본적인 연산이다.

NOT 연산은 다양한 기호로 표기된다. 프로그래밍 언어에서는 주로 느낌표(!)를 사용하며, 수학 및 논리학에서는 명제 위에 가로줄(¬P)을 그리거나 물결표(~P)를 사용하기도 한다. 디지털 논리 회로에서는 인버터(Inverter)라고 불리는 논리 게이트로 구현되어, 입력 신호의 높음(High)과 낮음(Low) 상태를 반전시킨다.

NOT 연산의 진리표는 매우 간단하다. 입력이 하나이므로 가능한 경우는 두 가지뿐이다. 입력 A가 0(거짓)이면 출력은 1(참)이 되고, 입력 A가 1(참)이면 출력은 0(거짓)이 된다. 이 기본적인 반전 기능은 AND나 OR 같은 다른 논리 연산자와 결합되어 더 복잡한 논리 조건을 구성하는 데 필수적이다.

실제 활용에서 NOT 연산자는 조건의 배제를 표현한다. 예를 들어, 데이터베이스 쿼리에서 "NOT 상태 = '완료'"라는 조건은 완료 상태가 아닌 모든 레코드를 찾는다. 프로그래밍에서도 "if (!isValid)"와 같이 조건문에서 특정 조건이 만족되지 않을 때 코드를 실행하도록 하는 데 널리 쓰인다. 이처럼 NOT은 논리적 사고와 시스템 설계의 근간을 이루는 핵심 연산자이다.

6.3. XOR (배타적 논리합)

XOR은 배타적 논리합이라고도 불리는 논리 연산자이다. OR 연산이 두 입력값 중 하나 이상이 참일 때 결과가 참이 되는 반면, XOR은 두 입력값이 서로 다를 때만 결과가 참이 된다. 즉, 하나는 참이고 다른 하나는 거짓인 경우에만 참을 출력한다. 이 연산은 "둘 중 하나만"이라는 배타적인 선택의 개념을 수학적으로 표현한다.

XOR의 진리표는 다음과 같다. 두 입력 A와 B가 모두 거짓이거나 모두 참일 때는 결과가 거짓이며, 하나는 참이고 하나는 거짓일 때만 결과가 참이다.

A

B

A XOR B

0

0

0

0

1

1

1

0

1

1

1

0

디지털 회로 설계에서 XOR은 논리 게이트로 구현되며, 두 신호의 비교나 패리티 비트 생성 등에 활용된다. 프로그래밍 언어에서는 주로 ^ 기호로 표시되며, 비트 연산이나 특정 조건 판단에 사용된다. 또한 암호학에서는 간단한 암호화 기법의 기본 구성 요소로 쓰이기도 한다.

XOR은 OR 및 AND와 함께 기본적인 논리 연산을 구성하지만, 그 의미상 OR의 배타적 버전으로 이해될 수 있다. 일상 언어에서 "또는"이 맥락에 따라 포괄적일 수도 있고 배타적일 수도 있듯이, 논리학과 컴퓨터 과학에서는 이를 명확히 구분하기 위해 별도의 연산자로 정의한다.

7. 여담 및 관련 문서

  • 위키백과 - 논리합

  • 네이버 지식백과 - 논리 연산자 OR

  • MDN Web Docs - 논리 OR (||)

  • Oracle Help Center - SQL 조건: OR

  • Microsoft Learn - OR 연산자 (Visual Basic)

  • Python 공식 문서 - Boolean Operations

  • IEEE Xplore - A Study on the Optimization of OR Operations in Database Queries (학술 논문 예시)

  • KOCW - 디지털 논리회로: OR 게이트

리비전 정보

버전r1
수정일2026.02.24 07:38
편집자unisquads
편집 요약AI 자동 생성