CS

#3 부울 연산과 논리 게이트

프잘백 2022. 2. 23. 11:16
728x90

전자식 컴퓨팅으로 발전하기 까지의 과정을 살펴봤을때, 계전기나 트랜지스터로 전류의 흐름을 끄고 켤 수 있는 것과 같이 2가지의 전기적 상태만으로도, 우리는 중요한 정보를 표현할 수 있다. 우리는 이 표현을 이진(Binary)이라 부른다. 이 2가지 상태는 '참'과 '거짓'으로 나타내는 데 필요하다.

컴퓨터 안에서 on상태는 전류가 흐르고, true를 나타내는 상태이다. off상태는 전류가 끊기고, false를 나타내는 상태이다. 우리는 true와 false를 이진수인 0과 1로 나타낼 수 있다.

초기의 컴퓨터는 2진상태 뿐만아니라 3진상태, 5진상태 등을 나타낼 수 있었다. 하지만 전기신호들이 여러 잡음들로 인해 방해를 받으면 신호가 섞일 수 있었기 때문에 2진상태를 이용해 가장 명확한 신호로 사용할 수 있었다.

5진상태 시스템

 

2진상태 시스템

2진수를 사용했던 다른 이유 중 하나는 이미 수학 분야에 이를 다루는 분야가 있었기 때문이다.

부울대수학(Boolean Algebra)은 참과 거짓을 조작하는데 필요한 규칙과 연산방법을 모두 알아냈다.

독일의 수학자 George boole의 접근은 논리 방정식을 통해 공식적으로, 체계적으로 증명 되었다.

 

부울 대수학에서 변수의 값은 참과 거짓이고 연산은 논리적이다. 여기에는 NOT, AND, OR라는 핵심적인 연산이 있다.

NOT은 참이든 거짓이든 그것 중 하나의 값을 취하고 그것을 부정한다.

Boolean logic table for NOT

NOT 게이트에서 입력이 1(true)이면 전기신호는 접지상태가 되어 출력은 0(false)이되고, 입력이 0(false)이면 전기신호는 출력쪽으로 나가기 때문에 출력은 1(true)가 된다.

 

AND 게이트는 두 입력 상태의 값이 참일 때만 참을 출력하고 나머지는 거짓을 출력한다.

Boolean logic table for AND

AND 게이트를 만들기 위해선 두개의 트랜지스터를 연결해 두개의 입력과 하나의 출력이 만들어지게 한다.

이때, 연결된 두개의 트랜지스터의 입력값이 모두 참일때만 전기 신호가 출력에 도달하기 때문에 AND게이트를 만들 수 있다.

 

OR 게이트는 두 입력 중 하나 이상의 값이 참일 때 참을 출력한다.

Boolean logic table for OR

위의 회로 그림과 같이 하나 이상의 트랜지스터가 켜지면 전기신호가 output으로 나가기 때문에 1(true)을 출력한다.

 

전체적인 복잡성을 똑같이 유지하면서(트랜지스터와 선들은 똑같이 유지하면서) 그들을 대표하는것에 대해 생각하는 것은 더 큰 구성요소에 대한 생각을 길러준다.

예를들어, 계산에서 또다른 유용한 부울 연산을 Exclusive OR (=XOR)이라고 한다. XOR은 OR과 같지만 한가지 차이점이 있다. 두 입력이 동시에 1이면 XOR의 출력은 0이다.

 

Boolean logic table for XOR

 

 

하지만 중요한것은 각각의 논리 회로구성이나 그것을 이루는 트랜지스터에 대해 걱정할 필요가 없다는 것이다. 컴퓨터 기술자가 프로세서를 설계할 때 대부분 트랜지스터의 수준으로 일하지 않는다. 대신 그것보다 매우 큰 블록들로 논리 회로와 같은, 논리회로들로 만들어진 더 큰 구성요소들로 작업을 한다. 전문 프로그래머들도 본인이 프로그래밍한 논리가 물리적 세계에서 구현되는 방식에 대해서 생각하는 경우는 드물다.(트랜지스터같은 매우 작은 부품들은 더더욱)