불 대수와 논리게이트

나도 막 그렇게 디테일하게 아는 건 아닌데 이걸 대체 어떻게 아냐면 수능에 저게 나왔었음… ㅋㅋㅋㅋㅋㅋ 놀랍게도 실화입니다. 그래서 직탐 등급 잘 받으려면 첫번째로 엑셀(if랑 룩업계열), 두번째로 HTML(…), 세번째로 베이직(VB 맞음), 네번째로 이걸 잘 해야 함… 베이직은 뭐 수능시험장에서 코테 치는 것도 아니고 코드랑 초기 변수 주고 이거 다 돌면 뭐됨? 이런 식으로 나왔습니다.


불 대수

왜 그… 프로그래밍 언어를 공부하다보면 자료형이 나온다. 인트 플로트 문자열(스트링) 그리고 꼭 개근하는 자료형이 바로 Boolean인데… 왜 그거 있잖음. True AND False = False. 이 T/F를 지지고 볶는게 논리 연산이라고 보면 된다. 그래서 논리게이트의 진리표 자체는 불 대수에도 있다.

매우 당연하게도 만든 사람 이름이 불이다. ???: 어떻게 사람 이름이 불 ㅋㅋㅋㅋㅋ ??: 어떻게 사람 이름이 남쪽 ㅋㅋㅋㅋㅋㅋ 

진리표

AND, OR, NOT, XOR만 외우면 나머지 세개는 NOT이랑 조합하는거라 쉽다. 수능 성적 걸리면 어떻게든 외우게 된다 

AND(A ∧ B)

AB출력
000
010
100
111

입력으로 들어온 두 개가 전부 참이어야 참을 출력한다. 즉, AND에서 False가 뜬다는 건 적어도 하나는 거짓이라는 얘기이기도 하다.

OR(A ∨ B)

AB출력
000
011
101
111

둘 중 하나라도 참이면 True를 출력한다.

NOT(¬, !A)

A출력
01
10

입력과 반대되는 출력을 내놓는다. 입력이 False면 True, True면 False. 기호는 왼쪽에 있는 꺾쇠 기호가 맞는데, 프로그래밍 언어에서는 보통 !를 붙여서 쓴다. 만약 if문에 !=가 있다면 ‘NOT equal’이라고 보면 된다. (실제로도 같지 않다는 얘기)

NAND(A ⊼ B)

AB출력
001
011
101
110

AND+NOT이다.

NOR(A ⊽ B)

AB출력
001
010
100
110

OR+NOT.

XOR(A ⊻ B)

AB출력
000
011
101
110

배타적 논리합이라서 두 입력의 값이 달라야 True를 출력한다. 보통 지수승을 표기할 때 n^m 이런 형식으로 쓰는데 파이썬이나 자바스크립트에서는 XOR 기호이기 때문에 지수승은 **로 써주자.

XNOR(EQV, A ≡ B)

AB출력
001
010
100
111

XOR+NOT이라고 생각하면 쉽다. 모든 입력의 값이 같아야 True를 반환한다.

논리게이트

논리게이트는 불 대수를 물리적인 장치에 구현한 것이다. 불 대수(물리) 그래서 기호가…? 표시 방식은 세 가지가 있는데 저건 ANSI 방식. 아니 ㄹㅇ 이걸로 외웠음.

논리게이트가 들어가는 것 중에 가산기 듀오가 있다. 반가산기와 전가산기인데… 어? 반…? 1/2? 그러면 반가산기 두개 합치면 전가산기 되나요? 아뇨 OR게이트 추가해야됩니다.