컴퓨터는 전기를 끄고, 킨다!
이 두가지만으로 컴퓨터는 동작한다.
매우 작은 기능이라도, 응용을 통해 매우 큰 기능을 만들 수 있는것이다.
빨강머리앤을 예시로 들자면,
빨강머린 이야기 중 빨간머리애는 사는곳 그리고 친구가 사는곳이 멀리 떨어져 있었다.
그 당시에는 전화가 없었다. 그래서 그 둘이 만나기 위해 중간에 얘기하고 싶은게 있다면,
의사소통을 하기 위해 촛불을 켜두면 촛불을 깜빡일것이다 라고 앤이 제안했다.
한번이면 만나고 두번이면 밥먹었냐 세번이면 얘기할것이 많아 중간 지점으로 와서 만나자는 이야기가 있다.
촛불이라는 신호 하나로 여러가지 의미를 부여할 수 있는것이다.
이것을 바로 코드로 볼 수 있다.
전반적인 컴퓨터는 0과 1이라는 신호 하나로
의미를 부여해서 코드로 동작을 시키는 것이다.
0과 1로 커뮤니케이션 하는 예제 - 문자
첨자의 경우 크고(1) 작은(0) 원을
사용 및 조합해서 모든 알파벳을 표현한다.
0과 1로 커뮤니케이션 하는 예제 - 숫자
150이라는 10진법 수는 2진법으로 변환 가능
10010110이라는 2진법 수는 10진법 150으로 변환 가능
비트(bit)
A bit : 0 or 1
실생활에서 바로 볼 수 있는 바코드는
선의 굵기로 0과 1로 구분할 수 있다.
0 또는 1을 가지는 코드를 비트라고 한다.
비트를 가지고 결과적으로 프로그래밍이 동작을 하는 것이다.
0과 1로 문자나 숫자 어떤 의미를 부여하는것 의외에 연산도 가능하다.
논리 연산 -
AND Gate / OR GATE
코딩에서는 if 조건문과 같다. A가 0이고 B가 0이면 0이다.
if 조건문 안에서 and와 or를 작성해주는 것과 같은 개념이며,
(A,B를 input으로 본다.)
AND는 모두 0이면 0, 하나만 0이여도 0
OR 는 하나만 1이라도 1이된다.
전구에 배터리가 있고, 스위치가 이어지는 선이 있다고 보면
직렬의 경우 모두 다 연결되어야 불이켜지고
병렬은 하나만 닫혀져 있어도 불이 켜진다.
직렬은 AND 논리 연산자 처럼 움직이고,
병렬은 OR 논리연산자 처럼 움직인다 볼 수 있다.
논리 연산의 기호는 아래처럼 나타낼 수 있다.
AND GATE
OR GATE
NOT Gate
NOT Gate는 if문을 생각해보면 된다.
코딩으로 보자면 if(!(조건))에서 처럼 ! 느낌표가 붙으면 조건이 원래 참이었는데 거짓으로되는 부정연산자와 같다.
OR 와 NOT을 그리고 AND를 함께 쓸 수도 있다.
맨 오른쪽의 그림처럼 동그라미를 그려 NOT을 표현할 수 있다.
NAND 와 NOR GATE
NAND 와 NOR GATE는 각각 AND 와 OR의 결과값과 반대되면 된다.
나온 결과값을 not gate로 통과 시켜서 결과를 뒤집는것이다.
아주 간단한 결과 AB를 출력해주는 논리 연산을 해주는 GATE들로 실제로 하드웨어를 구성해서 내가 원하는 복잡한 동작을 하려면 굉장히 많은 GATE들이 필요하다.
부울 대수식
그래서 아래의 이미지와 같이 AB에서 통과된 값들을
좀 더 간단히 표현하기 위한 것이 부울 대수식인것이다.
AB 위의 ㅡ 는 NOT을 표현해준다.
따라서 AB + CD = Y와 (A+B)(C+D)=Y를 나타내면 아래의 그림과 같다.
더하는 + 는 OR 게이트이고, AND는 곱으로, 최종 게이트는 Y 결과값이다.
오른쪽의 그림은 A와 Bㅇ를 더해줌으로 OR가 되고
곱하여 나타냄으로써 AND에서 Y GATE로 출력되는 것이다.
(1x1은 1로써 A가 1이고, B가 1일때 AND는 AB로써 AxB로 생각해도 된다.)
IT 기술은 모두 이러한 기술을 기반으로 하는데, 가장 작은 부분부터 이해하며 여기서 계속 이어지게 된다.
이렇게 작은 논리 회로로 컴퓨터가 만들어지고 프로그래밍을 할 수 있도록 만들어 진다는게 신기했다.
댓글