[논리회로] 논리회로 기초 및 AND, OR, NOT 게이트, 논리연산 기초

2026. 1. 24. 01:49·CS/논리회로

회로 기초

간단하기 때문에 디지털시스템에서는 2진 회로(binary circuits)가 주로 사용된다. 입력값은 오직 1과 0이고 출력값은 오직 1과 0이기 때문.

그래서 이진회로를 사용할 때 변수 x에 의해서 스위치가 제어된다고 가정하면, x = 0 일 때 스위치가 열려서 전기가 통하지 않고, x = 1 일 때 스위치가 닫혀서 전기가 통하는 것을 알 수 있다.

 

그리고 이렇게 입력변수 x에 의해서 제어되는 스위치를 위와같이 S로 표현한다.

 

 

그래서 가장 간단히 이진회로를 구성해보면 위와 같다. x = 1 일 때 스위치가 닫혀서 전구에 불빛이 켜지고, x = 0이면 스위치가 열려서 전구의 불빛이 꺼지는 형태다. 여기서 회로의 동작 상태를 제어하는 신호는 스위치 제어 입력신호 x, 그리고 입력되는 변수도 x, 출력은 Light (전구)로 표현할 수 있다. 

 

전구가 켜지면 1, 꺼지면 0 이라하면 위의 회로는

L(x) = x 로 표현할 수 있다. 이를 논리함수 라고 칭하며, x를 입력변수라고 칭한다.

 

실제로 전자회로에서 위의 예시를 구현하면 스위치를 트랜지스터, 전구는 LED로 구현한 일반적인 손전등에서 볼 수 있는 예시이다.

 

전기회로에서는 접지(circuit ground)에 의해서 전력이 공금된다. 별다른 것은 아니고, 전원에서 출발한 전류가 접지를 만나 다른 접지를 통해서 다시 복귀한다는 뜻이다. (물리 수강안함이슈로 인해 설명은 여기까지..) 그리고 앞으로는 이 접지를 통해서 회로를 표현할 것이다.


AND / OR

전기회로와 스위치의 기초에 대해서 알았다. 이번에는 입력변수를 늘리는, 즉 스위치를 여러 개 설치해볼 수 있다.

 

스위치 두 개가 모두 1이어야 L = 1 이고 이외에는 L = 0 인 경우와

스위치 두 개가 모두 0이어야 L = 0 이고 이외에는 L = 1 인 경우가 있다.

 

전자(모든 스위치가 1이어야만 L = 1)을 AND 연산

후자(모든 스위치가 0이어야만 L = 0)을 OR 연산 이라고한다.

표기법은 AND가 "·", OR이 "+"를 사용한다.

 

AND 연산을 전자회로에서 구성하면 이렇게 스위치의 직렬연결로 구성할 수 있다. 어느 한 쪽의 스위치가 꺼지면 결과값도 0이 된다.

 

OR 연산을 전자회로에서 구성하면 이렇게 스위치의 병렬연결로 구성할 수 있다. 어느 한 쪽의 스위치가 꺼지더라도 하나의 스위치만 켜져 있다면 결과값은 1

 

AND와 OR 연산이 가장 기본이 되는 연산방법이다. 앞으로 모든 연산들은 AND 연산과 OR 연산을 적절히 섞어가면서 진행될 것이다.


역 (보수)

여태까지는 스위치가 닫힐 때, 즉 x = 1 일 때 전구가 켜지는, L = 1 인 상황을 가정했지만, 이와 반대로 x = 1 일 때 L = 0인, 연산도 진행하고 싶을 때가 있다. 스위치가 열려야 전구가 켜지는 상황ㅇㅇ

 

이런경우에는 위의 처럼 스위치와 전구를 병렬로 연결하면된다. 전류는 저항이 낮은 곳으로 흐르는 경향이 있어서 스위치가 닫히면 저항의 일종인 전구가 있는 쪽으로는 전류가 잘 흐르지 않는다고한다.

 

회로에 또 하나의 저항이 있는 이유는 I = V / R 이라는 고1 때 배우는 유구한 전통의 식에서 나오는데, 전자회로의 구리선은 저항이 적은 편이다. 따라서 5V 전원에 스위치와 전구를 병렬로 연결하고 스위치를 닫아버리면 아무런 저항 없이 전류가 회로에 흐르고, 전선 자체의 저항도 적은 편이어서 5 / (0에 수렴하는 값) 에 해당하는 전류가 흐른다. 이를 단락(short)라고하며, 단락이 일어나면 회로가 타버릴 수 있기 때문에 이를 방지하기 위해서 회로에 적당한 저항을 추가해주는 것이다.

 

아무튼 x = 0 이면 L = 1, x = 1이면 L = 0 인 함수 L(x)는 ~x, !x, NOT x 로 표현하고, 주로 x 위에 선을 그은 문자를 사용한다. 이게 컴퓨터라서 직접 작성할 수가 없는데 책보면 된다. 25쪽 참고

 

입력변수와 출력변수가 서로 반대로 나오므로 역(inverse) 또는 컴플리먼트(complement, 보수), NOT 연산 등의 용어를 사용한다. 또한 보수연산은 단일변수 뿐 아니라 다양한 곳에서 사용된다. 앞서 나온 AND 연산과 OR 연산, AND와 OR의 복합연산 등 복잡한 논리 식에서도 사용될 수 있다.


진리표

위에서 가장 기본적인 세 가지 논리 연산 (AND, OR, NOT) 연산을 스위치로 살펴보았는데, 입력된 변수에 따라서 최종적으로 출력되는 논리회로의 연산값을 표로 표현한 것을 진리표라고 한다.

 

이렇게 표현한 것. 왼쪽 두 개 열은 가능한 변수 x1과 x2의 경우를 오른쪽 두 열은 변수들로 인해 얻어지는 연산결과를 표시한 것이다. 앞으로는 굳이 AND 연산이나 OR 연산이 아니라 새로이 문제가 주어져서 논리회로를 적절히 구현해야하는 상황에서 진리표를 그릴 것이고, 변수도 굳이 2개가 아니라 여러 개가 될 수 있다.


논리게이트와 네트워크

아무리 복잡한 네트워크라도 앞으로는 위의 세 가지 기본논리연산을 사용하여 구현할 수 있는 논리연산들의 조합으로 표현된다. 각 논리회로는 트랜지스터로 구현하고, 얻어진 회로를 논리 게이트(logic gate)라고 칭한다. 즉, 트랜지스터로 구현한 논리회로  AND, OR, NOT을 논리 게이트라고 칭하며, 편의상 스키매틱(schematic)이라는 회로도로 묘사된다.

 

위에서부터 각각 AND 게이트, OR 게이트, NOT 게이트의 회로도를 표시한 것이다. 앞으로 회로도에서는 이 논리게이트들을 이용하여 회로를 구성할 것이다

 

그래서 회로의 규모가 커지다보면 다수의 논리게이트들이 네트워크로 구현된다. 다수의 논리게이트들의 조합으로 이루고 있는 회로를 네트워크라고 칭한다. 또한 논리게이트를 사용하여 입력된 값에 따라 원하는 값을 출력하도록 네트워크를 구현하는 방법은 여러 가지가 있는데, 이 때 회로의 복잡도를 최소한으로 가져가는 것이 좋다. 그리고 이런 게이트들의 네트워크를 논리 네트워크 또는 논리회로라고 칭한다.


분석과 합성

기존 논리 네트워크의 기능을 해석하는 것을 분석, 직접 입력값에 따라서 원하는 출력이 나오도록하는 것을 합성이라고한다. 물론 합성보다 분석이 더 쉽다.

 

합성은 뒤에서 배울 것이고, 우선은 분석부터 해보자면 회로를 분석하는 방법은 진리표를 작성하면 된다. 각각의 입력값이 모두 0인 경우에서부터 하나씩 1로 바꿔가며 마지막에는 모든 변수가 1이 되는 경우에 따라서 진리표를 작성해보면 된다.

 

https://boardmix.com/kr/skills/timing-diagram/

분석의 결과값은 진리표로 작성해도 되고, 시간에 따른 각 변수 또는 논리게이트 입력값과 논리회로 총 결과값의 전류변화를 그래프 형태로 그려도 된다. 이를 타이밍도라고 칭한다.

 

위 두 논리회로는 얼핏보면 다른 논리회로인 것 같아보이지만

(귀찮음이슈로 왼쪽이 입력, 오른쪽이 출력이며, 위의 입력변수가 x1, 아래 입력변수가 x2)

실제로 진리표를 그려보면 두 변수에 대한 결과값이 동일하다. 따라서 두 논리회로는 복잡도가 더 낮은 아래의 것을 사용하는 것이 더 좋다. 식으로 표현하면 위에꺼가 ~x1 + x1 · x2 가 되는 것이고, 아래꺼가 ~x1 · x2 가된다.


부울대수 (불대수)

부울대수는 논리회로 분석 및 설계에 사용되는, 특히 스위치로 구성된 전기회로의 구성을 효과적으로 설명하는 수단 중 하나이다.

 

불대수 공리

1a. 0 · 0 = 0

1b. 1 + 1 = 1

2a. 1 · 1 = 1

2b. 0 + 0 = 0

3a. 0 · 1 = 1 · 0 = 0

3b. 1 + 0 = 0 + 1 = 1

4a. x = 0이면 ~x = 1

4b. x = 1이면 ~x = 0

말이 거창해보이지만 그냥 앞서 배운 AND연산과 OR 연산을 정의한 것 뿐이다. 1번부터 2번은 0 또는 1로만 이루어진 피연산자에서의 AND 연산과 OR 연산을, 3번대는 0과 1로 이루어진 피연산자 간의 AND와 OR 연산을, 4번대는 NOT 연산을 정의한 것 뿐이다.

 

단일 변수 정리

위 공리로 몇 가지 법칙들을 정의할 수 있다. x를 불변수(부울변수)라고하면, 아래 법칙들이 성립한다.

5a. x · 0 = 0

5b. x + 1 = 1

6a. x · 1 = x

6b. x + 0 = x

7a. x · x = x

7b. x + x = x

8a. x · ~x = 0

8b. x + ~x = 1

9. ~~x = x

가 있다. 이것들도 사실 논리적으로 생각하면 자명한 것들이다. 5번대는 각각 AND나 OR 연산자에서 한쪽 피연산자가 0, 1이면 계산결과가 자동으로 0, 1로 결정되는 것이고, 6번대에는 AND나 OR 연산자에서 한쪽 피연산자가 각각 1이나 0이면 남은 x에 의해서 계산결과가 정해지기 때문. 7번은 불변수 간의 AND 연산이나 OR 연산은 불변수 자신이 나오고, 8번은 불변수와 불변수의 보수를 합하면 전체, OR 연산을하면 0이 나오고, 보수의 보수는 원래 변수가 나오는 것을 의미한다. 집합을 사용해서 생각할 수 있다.

 

2-변수와 3-변수에 대한 특성식

변수가 여러 개인 논리식을 위해서 항등식을 몇 가지 정의하여 사용할 수 있다. 변수 x, y, z가 불변수라면 아래의 식들이 성립한다.

추가로 쌍대성원리(principle of duality)에 대해서 알아야하는데, 참인 논리식의 모든 AND 연산을 OR 연산으로, 모든 상수 1을 0으로, 모든 상수 0을 1로 바꾸는, 쌍대식은 항상 참이다. 아래 예시에서 b는 a의 쌍대식이다. 따라서 a가 참이면 b도 참이다.

 

교환법칙

10a. x · y = y · x

10b. x + y = y + x

 

결합법칙

11a. x · (y · z) = (x · y) · z

11b. x + (y + z) = (x + y) + z

 

분배법칙

12a. x · (y + z) = (x · y) + (y · z)

12b. x + y · z = (x + y) · (x + z)

일반적인 · , + 연산자를 곱셈과 덧셈기호로 사용할 때의 분배법칙과 비슷하지만 식을 묶을 때 x · x = x 와 + 연산자도 분배법칙을 적용할 수 있다.

 

·흡수법칙

13a. x + x · y = x

13b. x · (x + y) = x

13a => (x · 1) + (x · y) = x · (y + 1) = x · 1 = x

 

통합법칙

14a. x · y + x · ~y = x

14b. (x + y) · (x + ~y) = x

14a => (x · x) + (y + ~y) = x · 0 = x

 

드모르간의 법칙

15a. ~(x · y) = ~x + ~y

15b. ~(x + y) = ~x · ~y

16a. x + ~x · y = x + y

16b. x ·(~x + y) = x · y

드모르간의 법칙의 증명 진리표로 구할 수 있다.

 

컨센서스

17a. x · y + y · z + ~x · z = x · y + ~x · z

17b. (x + y) · (y + z) · (~x + z) = (x + y) · (~x + z)

 

17a => xy + yz + ~xz = xy + yz(x + ~x) + ~xz = xy + xyz + ~xyz + ~xz = xy(1 + z) + ~xz(y + 1) = xy · 1 + ~xz ·1 = x · y + ~x · z

 

정도가 되겠다.


(x + z)(~x + ~z) = x~z + ~xz

(x + z)(~x + ~z) = ~xx + ~zx + ~xz + ~zz = 0 + ~zx + ~xz + 0으로 성립한다.

 

x~z + ~y~z + xz + ~yz = ~x~y + xy + x~y

 

(좌변) ~z(x + ~y) + z(x + ~y) = (~z + z) (x + ~y) = x + ~y

(우변) x(y + ~y) + ~x~y = x + ~x~y = (x + ~x) ~y = x + ~y (마지막거 16a)

 

대충 이렇게 사용할 수 있다. 간단한 예시이지만 아주 복잡한 과정이므로 복잡한 논리식에 대수학적 방법을 사용하는 것은 현실적이지 못하지만, 이 개념들을 잘 이해하고 있어야 CAD 툴 등의 다양한 논리함수를 사용할 수 있다.


연산 우선순위

AND, OR, NOT 연산은 항의 순서에 따라 결과가 달라지므로 괄호를 사용해 연산의 순서를 정할 수 있다. 다만 지나친 괄호 사용을 피하기 위해서 괄호가 없는 경우에는 논리식의 연산은 NOT - AND - OR 순서로 처리된다. 또한 위에서 이미 실천했지만 간단한 표현을 위해서 연산기호 · 은 일반적으로 생략한다.


암튼 이렇게 논리회로 설계에 필요한 기본 개념들에 대해서 다뤄보았다. 다음번에는 여기서 아주 간략하게 다뤘던 게이트 합성에 대해 알아보고자한다.

 

수학적인 내용이 많아서 고작 40페이지 읽는데 2시간을 써버릴 줄이야.. 암튼 끝

 

'CS > 논리회로' 카테고리의 다른 글

[논리회로] 캐리 예측 가산기 및 곱셈기  (2) 2026.02.02
[논리회로] 수의 표현과 가산기, 리플 캐리 가산기 및 래딕스-컴플리먼트 기법을 통한 감산기 설계  (0) 2026.02.01
[논리회로] 카르노 맵과 콰인-맥클러스키 알고리즘  (0) 2026.01.30
[논리회로] 가장 기본적인 논리게이트로 합성하기  (1) 2026.01.26
'CS/논리회로' 카테고리의 다른 글
  • [논리회로] 캐리 예측 가산기 및 곱셈기
  • [논리회로] 수의 표현과 가산기, 리플 캐리 가산기 및 래딕스-컴플리먼트 기법을 통한 감산기 설계
  • [논리회로] 카르노 맵과 콰인-맥클러스키 알고리즘
  • [논리회로] 가장 기본적인 논리게이트로 합성하기
Radiata
Radiata
개발을 합니다.
  • Radiata
    DDD
    Radiata
  • 전체
    오늘
    어제
    • 분류 전체보기 (211) N
      • 신년사 (3)
        • 2025년 (2)
        • 2026년 (1)
      • CS (59) N
        • JVM (12)
        • 백엔드 (20) N
        • 언어구현 (1)
        • 객체지향 (1)
        • 논리회로 (5)
        • 컴퓨터구조 (9)
        • 데이터베이스 (1)
        • 컴퓨터 네트워크 (10)
      • 언어공부 (64)
        • Java | Kotlin (48)
        • JavaScript | TypeScript (9)
        • C | C++ (6)
      • 개인 프로젝트 (11)
        • [2025] Happy2SendingMails (3)
        • [2026] 골든리포트! (8)
        • [2026] 순수자바로 개발하기 (0)
        • 기타 이것저것 (0)
      • 팀 프로젝트 (29)
        • [2025][GDG]홍대 맛집 아카이빙 프로젝트 (29)
      • 알고리즘 (13)
        • 백준풀이기록 (11)
      • 놀이터 (0)
      • 에러 수정일지 (2)
      • 고찰 (24)
        • CEOS 23기 회고록 (2)
  • 블로그 메뉴

    • CS
    • 언어공부
    • 개인 프로젝트
    • 팀 프로젝트
    • 알고리즘
    • 고찰
    • 신년사
    • 컬러잇 개발블로그
  • 링크

    • 컬러잇 개발블로그
  • 공지사항

  • 인기 글

  • 태그

    144
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Radiata
[논리회로] 논리회로 기초 및 AND, OR, NOT 게이트, 논리연산 기초
상단으로

티스토리툴바