불 논리

불 논리()는 논리적 산법의 완전한 체계이다.

불 논리라는 이름은 19세기 중순에 논리의 대수계를 처음으로 정의한 조지 불에서 따온 것이다. 불 논리는 전자 공학, 컴퓨터 하드웨어 및 소프트웨어 등으로 넓게 응용되고 있다. 1938년 클로드 섀넌(Shannon, Claude)은 불 논리를 릴레이에 의한 전기 회로 장착 방법을 나타냈다. 이 사실은 머지 않아 전자식 컴퓨터를 만드는 데에 없어서는 안 될 존재임이 밝혀졌다.

여기서는 집합 대수를 이용하고, 집합, 불 연산, 진리값 표 등의 기본 해설과 불 논리의 응용에 대해 풀이한다. 불 대수 글에는 불 논리의 공리를 만족하는 대수 구조의 형태를 설명하고 있다. 이진수에서는 컴퓨터에서 쓰이는 이진수를 풀이하고 있다.

용어

디지털 회로설계 
불 논리는 전기 공학 회로 설계에도 사용된다. 이때 0, 1은 디지털 회로로의 비트가 다른 2개 상태를 나타내, 전압의 높낮이를 따른다. 회로는 변수를 포함한 식에서 표시된다. 입출력이 완전하면, 이를 불 논리식에서 표현할 수 있다.

AND 게이트, OR 게이트, NOT 게이트와 같은 기본 논리 회로만을 사용할 수도 있지만, NAND 게이트, NOR 게이트, XOR 게이트 등도 조합해 디지털 회로를 구성할 수 있다. 조합 방법은 연산자의 우선 순위에 따라 직렬이나 병렬과 결합한다.

데이터베이스 
관계 데이터베이스에서는 쿼리를 위해 SQL 등의 데이터베이스 고유 언어를 사용하지만 이것들은 불 논리를 포함하고 있다. 이 경우, 표 안의 레코드(record)는 「집합」안의 「원」에 가깝다. 이를테면, SQL의 SELECT문은 데이터베이스 안의 바깥(표)으로부터 데이터를 다음과 같이 추출한다.

 SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Smith' AND FIRST_NAME = 'John' ;
 SELECT * FROM EMPLOYEES WHERE LAST_NAME = 'Smith' OR FIRST_NAME = 'John' ;
 SELECT * FROM EMPLOYEES WHERE NOT LAST_NAME = 'Smith' ;

여러 불 연산이 있는 경우, 괄호를 사용해 연산의 순서를 제어한다:

 SELECT * FROM EMPLOYEES WHERE (NOT LAST_NAME = 'Smith') AND (FIRST_NAME = 'John' OR FIRST_NAME = 'Mary') ;

필요에 따라 괄호를 얼마든지 박스로 만들 수도 있다. 복수의 바깥(표)을 불 연산으로 조합하는 것을 결합이라고 한다.(관계 대수).

검색 엔진 
이 경우, 인터넷의 각 웹페이지가 「집합」의 「원」에 가깝다. 검색 엔진에 따라 쿼리의 문법은 여러 가지이다. 여기에서는 구글의 문법을 설명한다.

 논리곱에는 기호를 사용하지 않는다. 따라서 키워드를 2개 늘어 놓았을 경우 논리곱이라고 해석된다.
 "키워드 1" "키워드 2"
 논리합에는 "OR"를 사용한다.
 "키워드 1" OR "키워드 2"
 마이너스 기호로 논리 부정을 나타낸다(실제로는 AND NOT).
 "키워드 1" -"키워드 2"
 연산자의 우선 순위가 정해져 있기 위해, 괄호는 사용하지 않는다.

재미있는 점은 구글 스칼라에서는 "OR"를 사용하면 배타적 논리합(XOR)을 사용한다.

같이 보기 

 불 대수
 수리 논리학 (기호 논리학)
 불 함수
 논리 회로

참조 
 Shannon, Claude (1938) "The Symbolic Analysis of Relay and Switching Circuits".

논리학
불 대수