불린형(Boolean)이라는 자료형이 있다. 못들어본 사람도 있겠지만 1800년대 영국의 수학자 Boole의 이름을 따라서 만들어진 수학의 개념을 부울 대수 (Boolean Algebra)라고 함.
부울 대수는 0과1을 사용하여 논리회로를 만든다. 이진법을 사용하는 컴퓨터의 원리를 이해하려면 필수적인 과목이라 할 수 있다.
기본적으로는 0과 1을 입력하여 결과도 0과 1로 출력된다.
0과1이 인간에게는 큰 의미가 없겠지만 0을 거짓 1이 참이라고 하면 큰 의미가 생긴다.
0은 낮은 전압 1은 높은 전압이 되고 논리회로를 바탕으로 물리회로가 설계된다.
자바 논리 자료형에서 0은 false 거짓 1은 true 참이다.
논리연산은 논리연산자 챕터에서 다루지만 여기서는 간단히 AND OR NOT 연산에 대해서만 이야기 하겠다.
먼저 AND 연산이다.
그림은 다음과 같다.
논리 연산자는 수많은 의미를 만들어 낼 수 있다.
말로하면
A = 비가 온다
B = 외출을 한다
R = 우산을 들고 나간다
1) A 0 B 0 R 0
비가 안오고 외출도 안한다. 우산을 안들고 나간다
2) A 0 B 1 R 0
비가 안오고 외출을 한다. 우산을 안들고 나간다.
3) A 1 B 0 R 0
비가 오고 외출을 안한다. 우산을 안들고 나간다.
4) A 1 B 1 R 1
비가 오고 외출을 한다. 우산을 들고 나간다.
* 논리적으로 말이 된다. 우산을 언제 들고 나가는지 알 수 있다. 이렇게 AND 게이트에 논리를 대응시키면 비가오는 날 외출이라는 조건에서 행동을 만들어 낼 수 있다. 특정 상황에서의 논리를 만들어 내는 것이므로 게임의 캐릭터나 인공지능이 행동하는 조건이 될 수도 있다.
다음은 OR 연산이다.
OR의 예를 들어보면.
메뉴가 2개인 식당에서 주문하는 상황
A = 삼겹살을 먹었다.
B = 족발을 먹었다.
C = 고기를 먹었다.
1) A 0 B 0 R 0
삼겹살을 안먹었다. 족발을 안먹었다. 고기를 안먹었다.
2) A 0 B 1 R 1
삼겹살을 안먹었다. 족발을 먹었다. 고기를 먹었다.
3) A 1 B 0 R 1
삼겹살을 먹었다. 족발을 안먹었다. 고기를 먹었다.
4) A 1 B 1 R 1
삼겹살을 먹었다. 족발을 먹었다. 고기를 먹었다.
OR은 둘중 하나만 참이되도 결과가 참이된다. 조건이 느슨하다는 것은 두가지 명제 중 하나만 참이면 결과도 참이라는 것이다. 위의 예시는 고기에는 소고기도 있고 닭고기도 있으므로 메뉴가 삼겹살과 족발 두개인 식당이라는 특정 상황에서 OR연산 한 것이다. 아직 세상의 모든 사상이 컴퓨터의 세계로 옮겨진 것은 아니기 때문에, 프로그램을 만들다 보면 조건이 한정되어 있는 경우가 많다. 이 때 조건 통과에 느슨함을 주기 위해서 OR연산을 사용하게 된다.
논리연산의 뒤에 논리학이라는 엄청난 학문이 받치고 있다고 생각하면 무수한 활용법이 있을 것이다. 위의 예시는 그냥 지나가듯이 보는 것으로 하고 프로그래밍을 만들때 자신만의 탄탄한 논리를 만드시길 바란다.
이진법의 연산에서 본 것 처럼 비트를 반전 시킨다. 0을 1로 1을 0으로 반전 시킨다.
명제의 부정이라고도 할 수 있다...만 프로그래밍에서는 명제를 그렇게 까지 까다롭게 참과 거짓으로 구분하지 않는다. 그냥 A의 비트를 반전하는 것이 R이다.
A = 나는 군인이다.
R = 나는 민간인이다.
1) A 0 R 1
나는 군인이 아니다. 나는 민간인이다.
2) A 1 R 0
나는 군인이다. 나는 민간인이 아니다.
자바에서 boolean 형은 true 와 false 값을 가진다. 논리게이트에서 true는 1이고 false는 0로 대응된다.
boolean 에 true 를 저장하고 println 로 출력하면 true 가 출력된다.
boolean 자료형은 if나 while 조건문 등에서 사용된다. boolean 형 변수를 선언하지 않고도 true와 false 값을 단독으로 사용할 수 있다.