1. 논리연산에 대해
논리연산의 설명에 앞서, 논리(Logic)를 간단히 말하면 모든 것을 참과 거짓이라는 두
가지 원소만으로 구성되는 체계이다. 고대 그리스부터 있던 것으로 계속 논증에 대한 학문으로 이어져 오다가
조지 불(George Boole)이 불 대수(Boolean
algebra)를 고안하여 논리에 대한 연산이 가능한 체계로 정착된다.
예로 전기에서 전압이 인가되었을 때의 논리를 참으로 하고, 전압이
인가되지 않았을 때의 논리를 거짓으로 하자. 그렇다면 불 대수로 전압이 있을 때 ‘1’, 전압이 없을 때 ‘0’이 된다. 그리고 컴퓨터에서 전압이 있을 때 비트가 ‘1’, 전압이 없을 때
‘0’이므로, 불 대수를 그대로 2진수에서 적용할 수 있다.
이러한 논리 체계에서 행하는 연산방법을 논리연산(Logical operation)이라
부른다. 이 논리연산을 위한 연산자와 연산법칙을 알아본다.
2. 논리연산자의 종류
불 대수에서 쓰이는 논리연산자는 집합(Set)의 종류를 나타내는 연산자와 비슷하게 생각하면 쉬우므로 여기서는 집합의 개념을 가져와 논리연산자에 접근한다. 또한 각각의 논리 연산자들은 연산결과가 항상 일정하게 정해져 있으므로, 피연산자와
결과를 표로 나열하여 쉽게 파악할 수 있는 진리표(Truth table)라고 부르는 것을 연산자와 함께
알도록 한다.
먼저 A라는 집합의 여집합 개념으로 참의 나머지 또는 거짓의 나머지인데
원소가 ‘1’ 또는 ‘0’이므로 서로가 나머지관계로 부정(반전)관계에 있다고 할 수 있다. 이렇게
피연산자의 반전을 일으키는 연산자를 부정(NOT) 연산자라고 부른다.
수식에서 A’으로 표현한다.
피연산자 |
NOT |
A |
A’ |
0 |
1 |
1 |
0 |
다음으로 집합 A와 집합 B의 교집합 개념으로 두 집합 모두가 참일때만 그 결과를 참으로 부른다. 즉, A가 ‘1’이고 B가 ‘1’일 때만 해당하며 ‘0’이 들어 있으면 거짓이 되는 것이다. ‘0’이 하나라도 있으면 ‘0’이 되는 성질로 논리곱(AND, 그리고) 연산자라고 부른다. 수식에서 A∙B로 표현하며 산술연산과 같이 AB로 생략하여 쓰기도 한다.
AND |
||
B |
A∙B=AB |
|
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
AND |
|||
A |
B |
C |
A∙B∙C=ABC |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
이어서 집합 A와 집합 B의 합집합 개념으로 둘 중 어느 집합이라도 참이면 그 결과를 참으로 부른다. 즉, A가 ‘1’이거나 B가 ‘1’이라면 모두 해당하며 둘 다 ‘0’일때만 거짓이 되는 것이다. ‘1’이 하나라도 있으면 ‘1’이 되는 성질로 논리합(OR, 또는) 연산자라고 부른다.(논리에 올림 개념은 없다는 것을 전제로 한다.) 수식에서 A+B로 표현한다.
OR |
||
A |
B |
A+B |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
OR |
|||
A |
B |
C |
A+B+C |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
그 다음으로 집합 A와 집합 B간의 상호 차집합의 합집합 개념으로 둘 중 하나만 참이라면 그 결과를 참으로 부른다. 즉, A만 ‘1’인 경우와 B만 ‘1’인 경우에 해당하며 둘 다 ‘0’이거나 ‘1’이라면 거짓이 되는 것이다. 논리합에서 같은 경우만 배제하는 성질로 배타적 논리합(XOR : eXclusive OR, 배타적인) 연산자라고 부른다. 수식에서 A⊕B로 표현하고, 논리곱과 논리합의 형태로 A’B+AB’으로 쓰기도 한다. 단, 이 결과는 피연산자가 둘일때만 해당되는 사항으로 피연산자 셋 이상을 고려하여 ‘참(‘1’)의 개수가 홀수일 때 참(=짝수 패리티)’인 연산자로 기억하도록 한다.
XOR |
||
A |
B |
A⊕B |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
XOR |
|||
A |
B |
C |
A⊕B⊕C |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
그 외에도 논리곱의 부정연산 결과를 부정논리곱(NAND : Not AND), 논리합의 부정연산 결과를 부정논리합(NOR : Not OR), 배타적 논리합의 부정연산 결과를 배타적 부정논리합(XNOR : eXclusive Not OR)라고 부른다. 각 연산자들을 수식으로 표현하면 (A∙B)’, (A+B)’, (A⊕B)’이 되며 이들의 진리표는 아래와 같다. 배타적 부정논리합에 한하여 A⊙B로도 표현하며 논리곱과 논리합의 형태로 A’B’+AB으로 쓰기도 한다.
NAND |
||
A |
B |
(A∙B)’ |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
NOR |
||
A |
B |
(A+B)’ |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
XNOR |
||
A |
B |
(A⊕B)’=A⊙B |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
원형의 세 가지 연산과 부정연산을 추가한 세 가지를 비교하면 서로 ‘1’과 ‘0’이 뒤바뀐 것으로 확인할 수 있다. 즉, 원래의 결과에 부정연산한 것과 같다. 이상의 7가지 논리연산자들을 기본으로 알고 이후의 논리식에 적용할 수 있도록 한다.
3. 논리연산의 법칙
불 대수에서 쓰이는 논리연산이 가지는 특징으로 항상 성립하는 논리식의 변형으로 생각한다. 아래의 법칙에 이름은 있지만 이름 자체는 크게 중요하지 않다.
법칙 |
논리합 기준 |
논리곱 기준 |
이중 부정 |
(A’)’=A |
|
A+1=1 |
A∙0=0 |
|
상보 |
A+A’=1 |
A∙A’=0 |
항등 |
A+0=A |
A∙1=A |
멱등 |
A+A=A |
A∙A=A |
흡수 |
A+(A∙B)=A |
A∙(A+B)=A |
공통 항등 |
A+(A’∙B)=A+B |
A∙(A’+B)=A∙B |
단일 |
(A∙B)+(A∙B’)=A |
(A+B)∙(A+B’)=A |
교환 |
A+B=B+A |
A∙B=B∙A |
결합 |
(A+B)+C=A+(B+C) |
(A∙B)∙C=A∙(B∙C) |
분배 |
A+(B∙C)=(A+B)∙(A+C) |
A∙(B+C)=(A∙B)+(A∙C) |
드 모르간 |
(A+B)’=A’∙B’, (A+B+C)’=A’∙B’∙C’ |
(A∙B)’=A’+B’, (A∙B∙C)’=A’+B’+C’ |
합의 |
(A+B)(B+C)(C+A’)=(A+B)(C+A’) |
(A∙B)+(B∙C)+(C∙A’)=(A∙B)+(C∙A)’ |
각 연산자에 대해 항상 성립하는 법칙으로 모두
외우려 하기보다 필요할 때마다 찾아서 보고 논리식의 연산에 적용하도록 한다.
이 중 특별히 살펴볼 것은 오거스터드 드 모르간(Augustus De
Morgan)이 증명한 드 모르간의 법칙(De Morgan law)이다. 이 법칙은 논리합의 부정은 개별 부정연산의 논리곱(NOR=NOT∙ NOT)이
되고 논리곱의 부정은 개별 부정연산의 논리합(NAND=NOT+NOT)이 된다. 요약하면
논리곱과 논리합은 서로 치환될 수 있음을 의미하는데 모든 논리식을 부정논리합만으로 표현하거나 부정논리곱만으로 표현할 수 있다는 것이 된다.
그 외에 표에서도 일부 나타나지만 논리식의 연산순서는 괄호가 우선되며 부정연산자를 이어서 논리곱, 논리합의 순이 된다. 부정연산자를 제외하고 산술연산의 괄호, 곱셈, 덧셈순과 같이 생각한다.
4. 결론
논리연산은 산술연산과 달리 거짓(‘0’)인가 아닌가(‘1’)에 기반하므로 익숙하지 않을 수 있다. 그렇지만, 논리연산에 대해 기본적으로 알고 있어야 이후에 나오는 논리회로(Logic circuit)에서 필요하므로 알고 넘어가도록 한다.
댓글 없음:
댓글 쓰기