논리 연산

IT 위키

논리 연산(論理演算, logical operation 또는 Boolean operation)은 참과 거짓의 진리값을 대상으로 새로운 진리값을 산출하는 연산이다.

논리 연산은 명제 논리, 불 대수, 디지털 회로, 프로그래밍 언어에서 널리 사용되는 기본 연산이다. 일반적으로 입력값은 참(True, 1)과 거짓(False, 0) 중 하나이며, 연산 결과도 참 또는 거짓으로 표현된다.[1]

논리 연산은 수학적으로는 불 대수(Boolean algebra)의 연산으로 다루어지고, 컴퓨터에서는 조건식 평가, 비트 조작, 논리 게이트 설계, 데이터 필터링 등에 사용된다.[2]

주요 연산

[편집 | 원본 편집]

논리 연산의 기본 연산에는 논리곱, 논리합, 부정, 배타적 논리합 등이 있다.

연산 영문명 기호 설명
논리곱 AND 두 입력이 모두 참일 때만 참이다.
논리합 OR 두 입력 중 하나 이상이 참이면 참이다.
부정 NOT ¬ 또는 ~ 입력의 진리값을 반대로 바꾼다.
배타적 논리합 XOR 두 입력의 진리값이 서로 다를 때만 참이다.
부정 논리곱 NAND AND 결과를 부정한 연산이다.
부정 논리합 NOR OR 결과를 부정한 연산이다.

진리표

[편집 | 원본 편집]

진리표는 가능한 모든 입력 조합에 대해 논리 연산의 결과를 나타낸 표이다. 두 입력 A, B에 대한 대표적인 논리 연산의 진리표는 다음과 같다.

A B A AND B A OR B A XOR B NOT A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0

여기서 1은 참, 0은 거짓을 의미한다. NOT 연산은 단항 연산이므로 B의 값과 관계없이 A의 값만으로 결과가 결정된다.

논리 연산과 불 대수

[편집 | 원본 편집]

불 대수는 참과 거짓, 또는 1과 0으로 표현되는 값을 대상으로 하는 대수 체계이다. 논리 연산은 불 대수의 기본 연산으로, 디지털 회로의 스위칭 동작과 컴퓨터의 이진 처리 방식을 설명하는 데 사용된다.[3]

대표적인 불 대수 법칙은 다음과 같다.

법칙
항등 법칙 A AND 1 = A, A OR 0 = A
지배 법칙 A AND 0 = 0, A OR 1 = 1
멱등 법칙 A AND A = A, A OR A = A
보수 법칙 A AND NOT A = 0, A OR NOT A = 1
교환 법칙 A AND B = B AND A, A OR B = B OR A
결합 법칙 (A AND B) AND C = A AND (B AND C)
분배 법칙 A AND (B OR C) = (A AND B) OR (A AND C)
드 모르간 법칙 NOT (A AND B) = (NOT A) OR (NOT B)

컴퓨터에서의 활용

[편집 | 원본 편집]

논리 연산은 컴퓨터의 하드웨어와 소프트웨어 양쪽에서 모두 사용된다.

  • 조건식 평가: 조건문과 반복문에서 참·거짓을 판단한다.
  • 비트 연산: 정수 데이터를 비트 단위로 조작한다.
  • 디지털 회로: AND 게이트, OR 게이트, NOT 게이트 등 논리 게이트의 동작을 정의한다.
  • 검색과 필터링: 여러 조건을 결합해 데이터를 선택한다.
  • 권한 및 플래그 처리: 특정 비트가 설정되어 있는지 검사하거나 조합한다.

예를 들어 프로그래밍 언어에서는 두 조건이 모두 만족되어야 하는 경우 AND를 사용하고, 둘 중 하나만 만족되어도 되는 경우 OR를 사용한다. Microsoft의 C# 문서에서는 `bool` 피연산자에 대해 논리 부정, 논리 AND, 논리 OR, 배타적 OR, 조건부 논리 AND, 조건부 논리 OR 연산자를 제공한다고 설명한다.[4]

논리 연산자와 비트 연산자

[편집 | 원본 편집]

논리 연산자는 보통 참과 거짓으로 평가되는 값을 대상으로 한다. 반면 비트 연산자는 정수의 각 비트를 대상으로 같은 종류의 연산을 수행한다.

구분 대상
논리 연산 참·거짓 값 참 AND 거짓 = 거짓
비트 연산 이진수의 각 비트 1010 AND 1100 = 1000

프로그래밍 언어에 따라 `&&`, `||`, `!`는 논리 연산자로, `&`, `|`, `^`, `~`는 비트 연산자로 구분되는 경우가 많다. 다만 언어마다 연산자의 의미와 평가 방식이 다르므로 해당 언어의 문서를 확인해야 한다.[5]

단락 평가

[편집 | 원본 편집]

단락 평가(short-circuit evaluation)는 논리식의 결과가 이미 결정된 경우 나머지 피연산자를 평가하지 않는 방식이다. 예를 들어 AND 연산에서 첫 번째 조건이 거짓이면 전체 결과는 반드시 거짓이므로 두 번째 조건을 평가하지 않아도 된다. OR 연산에서는 첫 번째 조건이 참이면 전체 결과가 참으로 결정된다.

C#의 `&&`와 `||` 같은 조건부 논리 연산자는 필요한 경우에만 오른쪽 피연산자를 평가한다.[6]

다음은 논리 연산의 간단한 예이다.

bool a = true;
bool b = false;

bool andResult = a && b;  // false
bool orResult = a || b;   // true
bool notResult = !a;      // false
bool xorResult = a ^ b;   // true

위 예에서 `a && b`는 두 값이 모두 참이어야 참이므로 거짓이고, `a || b`는 둘 중 하나가 참이면 참이므로 참이다. `!a`는 `a`의 값을 반대로 바꾸며, `a ^ b`는 두 값이 서로 다르므로 참이다.

디지털 회로와의 관계

[편집 | 원본 편집]

논리 연산은 디지털 회로의 논리 게이트로 구현된다. AND 연산은 AND 게이트, OR 연산은 OR 게이트, NOT 연산은 인버터로 구현할 수 있다. 여러 논리 게이트를 조합하면 가산기, 비교기, 멀티플렉서, 산술 논리 장치(ALU) 같은 복잡한 회로를 만들 수 있다.

특히 NAND와 NOR 게이트는 다른 논리 연산을 구성할 수 있는 범용 게이트로 알려져 있어 디지털 회로 설계에서 중요하게 사용된다.

같이 보기

[편집 | 원본 편집]
  1. 논리 연산 - 위키백과, https://ko.wikipedia.org/wiki/%EB%85%BC%EB%A6%AC_%EC%97%B0%EC%82%B0, 확인한 날짜: 2026년 6월 5일
  2. 부울 대수 - 정보통신기술용어해설, https://www.ktword.co.kr/test/view/view.php?no=3676, 확인한 날짜: 2026년 6월 5일
  3. 부울 대수 - 정보통신기술용어해설, https://www.ktword.co.kr/test/view/view.php?no=3676, 확인한 날짜: 2026년 6월 5일
  4. 부울 논리 연산자 - C# reference, https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/boolean-logical-operators, 확인한 날짜: 2026년 6월 5일
  5. 부울 논리 연산자 - C# reference, https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/boolean-logical-operators, 확인한 날짜: 2026년 6월 5일
  6. 부울 논리 연산자 - C# reference, https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/boolean-logical-operators, 확인한 날짜: 2026년 6월 5일