barcode

불 대수와 논리게이트

Coding/코딩잡담

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


불 대수

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

 

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

 

진리표

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

 

AND(A ∧ B)

A B 출력
0 0 0
0 1 0
1 0 0
1 1 1

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

 

OR(A ∨ B)

A B 출력
0 0 0
0 1 1
1 0 1
1 1 1

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

 

NOT(¬, !A)

A 출력
0 1
1 0

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

 

NAND(A ⊼ B)

A B 출력
0 0 1
0 1 1
1 0 1
1 1 0

얘는 AND+NOT. 

 

NOR(A ⊽ B)

A B 출력
0 0 1
0 1 0
1 0 0
1 1 0

OR+NOT.

 

XOR(A ⊻ B)

A B 출력
0 0 0
0 1 1
1 0 1
1 1 0

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

 

XNOR(EQV, A ≡ B)

A B 출력
0 0 1
0 1 0
1 0 0
1 1 1

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

 

논리게이트

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

 

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

 

 

'Coding > 코딩잡담' 카테고리의 다른 글

SI 접두어와 컴퓨터 용량  (0) 2022.10.10
SMILES  (0) 2022.10.06
chmod가 뭐지?  (0) 2022.09.23
스택과 큐  (0) 2022.09.19
이진 탐색 알고리즘  (0) 2022.09.08