
CODE, 찰스 펫졸드
코드의 기원
개요
멀리 떨어져 있어도 너랑 얘기하고 싶어.

STEP 0. 허공을 가르는 손전등
로돌이: 뭐라고 쓰는지 보여?
줄순이: 보일리가..

STEP 1. 깜빡이는 손전등
A=한 번 깜빡임
B=두 번 깜빡임
C=세 번 깜빡임
...
Z=스물 여섯 번 깜빡임
자, 내가 뭐라고 하는지 잘 적어봐..!

깜빡깜빡깜빡깜빡...
STEP 2. 모스부호
알파벳 순서에 따라서 깜빡이는 건 너무 비효율적이야.
How are you를 보내려면 131번 깜빡여야해 .
이제부턴
-
짧게 깜빡이는 거랑
-
길게 깜빡이는 거랑 섞어서 쓸게.
-
그리고 알파벳이 끝나면 잠깐 멈출게.
자, 내가 미리 표를 만들어 놨어.


I...L..O...V..E...Y...O....U....♥
모스부호는 길게 깜빡임, 짧게 깜빡임 두 가지 표현방법을 통해 모든 언어를 대체할 수 있게 됐어.
점자체계도 같은 원리로 만들어졌고.

잠깐, 전기에 대해 알아보자
빛을 내려면 전기가 필요하다.
전기는 어떻게 발생할까?

전기는 전자가 궤도를 이탈하며 발생한다.

전자는(-) 극에서(+) 극으로 이동하고, 전류는(+) 극에서(-) 극으로 흐른다.
전류의 방향과 전자의 방향이 일치하지 않는 이유는 전자의 존재가 밝혀 지기 전에 전류의 흐름 방향을 반대로 정의했기 때문이다.
여기서, 건전지는 단지 전자를 이동시켜주는 역할을 한다.
전자는 단지 움직이면서 전류를 발생시킬 뿐이다.
전압 - 수압
전류 - 물의 양
저항 - 수도관 굵기
수압이 쌔고, 물의 양이 어마무시하며 수도관 굵기가 넓다면 어떻까?
전압이 높고 전류가 많이 흐르며, 저항이 적은 전기와 대응시킬 수 있을 것이다.
스위치, 내가 컨트롤 한다

빛을 켜고 끄는 On,OFF 기능을 통해 모스부호 전달이 가능해졌어.
접지, 회로가 너무 긴데?
우리집에 스위치가 있고, 너네 집에 전구가 있어.
내가 누르는 데로, 전구가 깜박이면서 모스부호를 전달할 수 있어!
근데 우리 거리가 너무 멀다 보니까, 회로가 너무 길어졌어.
각자 접지를 설치해서, 회로의 길이를 반으로 줄여보자.

우리 집 땅에서 나온 전자들이 어떻게 알고 너네 집 접지까지 가냐고?
사실 지구는 엄청 큰 전도체야.
전자의 공급처이자 보관소이기도 하지.
실질적으로 무한한 전자의 원천이 되고, 동시에 전자가 흘러 나갈 수 있는 매우 거대한 저장소가 되는 거야.
아까 말했듯, 건전지는 전자를 이동시키는 역할을 할 뿐이야.
그걸 받아주고, 다시 내보낼 수 있는 저장소 역할을 땅이 해줄 뿐이야.
직관적으로 이해가 힘들겠지만, 한 가지만 기억해.
건전지는 전자를 이동시켜주는 역할,
땅은 전자를 받아주고 보내주는 저장소 역할을 한다.
건전지는 전압이 있고, 땅은 전압이 없다. 0V다.
하지만 땅은 무한한 전자의 원천이다.
전자석, 아이디어 훌륭한데?
코일을 감은 쇠막대엣 전류를 흘렸더니 자석이 됐네?


그럼 이걸로 모스부호를 종이에 찍게 만들 수 있겠다.

이진수, 우리가 손가락이 두 개 밖에 없었다면

우와 1, 2, 4, 8, 16, 32, 64, 128 같이 2의 제곱의 합으로만 18, 53, 931, 49170같은 수가 표현 가능하다고??
그래도 표현이 안되는 숫자가 있지 않을까?
그럴리가..! 십진수를 표현하기 위해선 이진수의 자릿수가 많아지긴 하겠지만 말이다.
생각해보면 5단위, 10단위로 끊는 게 자연스러운 이유도 우리 손가락이 5개와 손이 2개이며,
이를 이용한 셈이 몇 백만년전부터 행해져왔기 때문이다.
논리 회로, Logic Gate
논리 회로는 불 대수(Boolean)를 물리적 장치에 구현한 것이다.
1개 이상의 논리적 입력값에 대해 논리 연산을 수행하여, 단 하나의 논리적 출력값을 얻는 전자회로를 말한다.

사실, 이 표는 공식처럼 외울 게 아니다.
한 논리, 한 논리 모두 경이로운 것이다.
0. 버퍼 게이트
딜레이가 필요한 경우, 버퍼 게이트를 사용한대.

1. AND 게이트
이 사진봐, 진짜 직관적으로 AND게이트를 표현했어.

AND GATE
2. OR게이트
생긴 것좀 봐.
AND게이트처럼 꼭 필요한 부분만 있지 않네?(회로 2개)
두 회로에서 값이 오지 않는 상황이거나, 와도 상관 없지만, 한 회로에서만 와도 결과를 표시할 상황일 경우 사용하겠네.

OR GATE
3. NOT 게이트
invert: (아래위를) 뒤집다, (순서를) 도치시키다
invertor: 변환기

NOT GATE
근데 어떻게 입력값을 invert시킬 수 있지?

와.. 이런 식으로?
항상 전류가 흐르게 기본 셋팅을 해놓고, 전자석이 켜지면 꺼지는 식으로 했구나.
'여기서 느낀 게, 전압을 두 군데 줬다는 것.
전압을 한 가지만 두고 이런 논리 게이트는 못짰을 거야.
아이디어는 전압의 하나 추가 이런 식으로 투자를 필요로할 수도 있겠군.'
4. NOR게이트
= OR게이트 + NOT게이트
= OR게이트의 결과의 여집합
OR게이트를 통과한 값이 0이 되어야, inverter를 통해 1이 나오기 때문에


NOR GATE
5. NAND게이트
: AND게이트 결과의 여집합


NAND GATE
6. XOR 게이트
: 입력값이 같지 않을 때의 결과를 표현할 수 있는 게이트다.
이진수 덧셈에 가장 핵심적인 게이트다.
논리 게이트 중에 가장 섹시하다.

드모르간 법칙
드모르간 법칙은 다음과 같은 의의가 있다.
1. 다른 논리게이트를 사용했음에도 같은 결과를 만들어낼 수 있다.
2. 게이트를 기점으로 인버터를 번갈아 사용하면 같은 결과를 만들어낸다.

이진 덧셈기
이진 수의 덧셈에선 carry라는 자리올림 비트가 필요하다.

Half Adder -> Full Adder -> 2^n비트 Adder


Full adder

이진수 덧셈연산의 과정이 이렇게 많은 아이들의 콜라보레이션의 결과였다니!
여러 비트의 덧셈기는 half adder + 다수의 full adder로 이루어진다.

지수는 비트 수를 나타낸다. 2^3 = 8에서 3은 비트 개수, 8은 표현 개수를 뜻한다.
코딩을 공부하며 원리의 원리를 궁금해하며, 결국 여기까지 와버렸다.
가장 기초적이며 기계적인 부분부터 공부하고 올라가는 것은 매우 비효율적이다.
가끔가끔 원리가 궁금할 때 마다, 원초적인 원리를 공부하는 방식으로 꾸준히 해나가야겠다.
~p227(가산기)까지의 내용