개요
컴퓨터가 데이터를 처리(Data Operations)하는 방법에는 크게 2가지가 있습니다. 하나는 수치연산(Arithmetic Operations)입니다. 대표적인 수치연산으로는 더하기, 빼기, 곱하기, 나누기 등이 있습니다. 수치연산은 문자 그대로 숫자를 기반으로 한 정량적인 양에 대한 계산을 하는 데 사용됩니다. 그리고 또 하나의 중요한 연산이 바로 논리연산(Logical Operations)입니다. 논리연산이란 입력된 데이터나 조건에 대해 검증을 했을 때 이것이 참(True)인지 거짓(False)인지 인식하는 계산을 의미합니다. 논리연산은 주어진 조건에 대한 맞는 것인지, 틀린 것인지를 확인하는 것입니다. 여기서는 컴퓨터가 수행하는 논리연산에 대해서 살펴보겠습니다.
논리연산의 시초, 부울 대수(Boolean Algebra)
논리연산은 부울 대수를 기초로 합니다. 부울 대수란 19세기 중반 영국의 수학자인 조지 불(George Boole, 1815 ~ 1864)이 고안한 수학기법입니다. 부울 연산이란 수리적 계산이 아니라 논리적인 상태와 판단을 다루는 것으로 참 또는 거짓으로 상태를 결정하게 됩니다. 컴퓨터에서는 참(True)을 1로 표현하고, 거짓(False)을 0으로 표현합니다. 컴퓨터 프로그래밍에서는 조건에 의한 분기를 결정하는데 이용되며, 디지털 논리 회로를 설계하는 데 사용됩니다. 컴퓨터 회로는 0과 1만을 다룰 수 있기 때문에 부울대수를 활용하여 논리를 컴퓨터 소자로 회로를 제작할 수 있게 됩니다.
논리연산의 종류
논리연산은 주어진 입력에 대해 판단한 결과를 출력하는 판단 알고리즘입니다. 각 논리연산은 진리표(Truth Table)를 통하여 연산의 결과를 직관적으로 확인할 수 있습니다. 대표적인 연산으로는 AND, OR, NOT, NAND, NOR, XOR 등이 있습니다.
- AND (논리곱): 논리 값인 0 또는 1을 가진 A와 B가 입력되었을 때 두 값이 모두 1(True)일 때 결과로 1(True)을 반환하는 것입니다. 즉, A 그리고 B가 모두 참일 때 결과도 참이고, 하나라도 거짓(0) 일 때에는 거짓(0)으로 반환하게 됩니다. 부울대수에서는 AxB 또는 AB로 표현되고, 프로그래밍에서는 A&B 형식으로 작성됩니다.
- OR (논리합): 논리 값인 0 또는 1을 가진 A와 B가 입력되었을 때 두 값 중 하나라도 1(True)일 때 결과로 1(True)을 반환하는 것입니다. 즉, A 또는 B 중에서 하나라도 참(1)이라면, 결과로 참(1)을 반환하게 됩니다. 그리고 A와 B 모두 거짓(0) 일 때에는 거짓(0)으로 반환하게 됩니다. 부울대수에서는 A+B 형식으로 표현되고, 프로그래밍에서는 A || B 형식으로 작성됩니다.
- NOT(부정): 논리 값인 0 또는 1을 가진 입력값 A 하나만을 입력받고, 입력 받은 결과를 부정하는 값을 반환하는 것입니다. 즉, A가 거짓(0)을 입력하면 참(1)으로 결과를 반환하게 되고, A가 참(1)으로 입력하면 거짓(0)으로 결과를 반환하게 됩니다.
- NAND(부정 논리곱), NOR(부정 논리합): NAND와 NOR은 각각 AND + NOT, OR + NOT을 결합한 형태입니다. 즉 NAND는 두 입력 A와 B에 대한 논리곱(AxB) 연산이후 그 결괏값이 나오게 되면 그 결괏값은 부정하는 값으로 바꾸어 반환하게 됩니다. 이와 유사하게 NOR의 경우에는 두 입력 A와 B에 대한 논리합(A+B) 연산 이후 그 결괏값이 나오게 되면 그 결괏값은 부정하는 값으로 바꾸어 반환하게 됩니다.
- XOR(배타적 논리합) : Exclusive OR라고도 표현합니다. 쉽게 설명하면 논리 값인 0 또는 1을 가진 A와 B가 입력되었을 때 두 값이 참 또는 거짓으로 동일하면 거짓(0)을 반환하고, 두 값이 서로 다르면 참(1)으로 반환하는 것입니다. 즉, 서로의 값이 배타적인지를 확인하여 서로가 같으면 거짓, 서로가 배타적이면 참을 반환하게 됩니다.
논리연산의 법칙
논리연산은 다양한 논리식에 대한 계산이 이루어질 때 동등한 의미의 연산식으로 대체, 변환할 수 있습니다. 이를 통해 논리식을 보다 간단하게 정리할 수 있게 됩니다.
- 교환(Commutative) 법칙: A와 B연산의 순서를 바꿀 수 있다는 것입니다. 예를 들어, A + B = B + A와 같이 서로 연산의 순서를 바꾸어도 결과는 동일하다는 의미입니다.
- 결합(Associative) 법칙: 동일한 연산이 3개 이상이 될 때 그 연산의 순서를 바꿀 수 있다는 것입니다. 예를 들어, (A+B)+C = A+(B+C)와 같이 동일 연산에 대해 계산순서를 달리하여도 결과는 동일하다는 것입니다.
- 분배(Distributive) 법칙: 서로 다른 연산이 포함되어 있을 때 연산 순서를 바꾸기 위해서는 각각의 연산에 대해 분배하여 계산해야 한다는 것입니다. 예를 들어, A+(BxC) = (A+B)x(A+C)와 같이 A+가 B와 C에 모두 적용되고 그 결과에 대해 x연산을 하면 결과는 동일하게 됩니다. 이와 유사하게 Ax(B+C) = (AxB)+(AxC)도 만족하게 됩니다.
- 동일(Idempotent) 법칙: 동일한 입력을 연산한 것은 동일한 입력의 원래 값과 동일하다는 것입니다. 예를 들어, A+A=A, AxA=A를 만족합니다. 따라서 불필요한 연산을 할 필요가 없다는 의미입니다.
- 흡수(Absorption) 법칙: 복합연산에서 양쪽 입력에 같은 연산데이터가 포함될 경우 동일한 입력데이터의 원래 값과 동일하다는 것입니다. 예를 들어, Ax(A+B) = A라는 의미는 A라는 입력과 A+B입력에 대해 논리곱을 하게 되면 A값과 동일하다는 뜻입니다. 유사하게 A+(AxB) = A도 만족하게 됩니다. < 끝 >
'정보통신기술' 카테고리의 다른 글
인터넷 주소에 대해 알아보기 (0) | 2023.05.07 |
---|---|
컴퓨팅 환경의 종류 (0) | 2023.05.06 |
HTTP (0) | 2023.05.05 |
이더넷(Ethernet)과 무선랜(Wi-Fi)에 대해 (0) | 2023.05.04 |
클라우드 추상화(Abstraction)와 가상화(Virtualization) 기술 (0) | 2023.05.02 |
클라우드 서비스 모델, NIST 모델과 Cloud Cube 모델 (0) | 2023.05.01 |
전송계층의 TCP와 UDP 비교 (0) | 2023.04.30 |
이진법과 플립플롭(Flip-Flop) (0) | 2023.04.29 |
댓글