앞서 0과 1밖에 모르는 컴퓨터에 대해 얘기를 했었는데 정확하게 말하면 0과 1밖에 모르는 것은 CPU입니다. 그렇다면 왜 CPU는 왜 0과 1밖에 모르는 걸까요?
이에 대해 이해하려면 먼저 기존의 뜬구름 잡는 듯한 논리적인 관점에서의 0과 1에서 벗어나 물리적인 0과 1의 의미를 알아야 합니다.
CPU는 반도체 소재로 만들어집니다.
반도체는 무엇인가요?
전기가 잘 통하는 물질은 도체라고 하며 전기가 통하지 않는 물질은 부도체라고 하는데요.
반도체란 특정 조건에서는 전기가 잘 통하지만 그렇지 않은 경우 전기가 통하지 않는 성질을 지닌 물질을 말합니다. 여기서 전기를 통하는 것을 전압이 인가된다고 말합니다.
이러한 반도체의 성질을 이용하여 논리 회로를 만듭니다. 예를 들어 AND 논리 회로의 경우 입력 단자 x, y 2개 모두 전압이 인가되면 출력 F에 전압이 인가되고, 어느 한 쪽이라도 전압이 인가되지 않으면 출력 F의 전압이 인가되지 않는 특성을 지녔습니다.
이렇게 만들어진 OR, AND, NOR, NOT, NAND, XOR, XNOR 등의 논리 회로(게이트)들이 복잡하게 조합하면 여러개의 입력값을 논리적으로 해석해 연산을 하거나 제어를 할 수 있게 되는 것입니다.
이런 복잡한 회로들이 모여서 CPU를 구성하게 됩니다.
반도체에 전압이 인가되면 1, 인가되지 않으면 0을 의미합니다. 그래서 CPU는 0과 1(전압을 인가하거나 안하거나)밖에 모른다고 하는 겁니다. 따라서 CPU를 통해 무엇인가 연산을 하려면 0과 1로 이루어진 인스트럭션을 전달해줘야 합니다.
여러분들이 개발한 프로그램은 컴파일러를 거쳐 0과 1로 이루어진 인스트럭션들(기계어)로 변환되고, Disk의 자성에 따라 0과 1로 구분되어 저장되어 있다가 프로그램이 실행 될 때 메모리에 Load됩니다. 그 후 메모리에서 각 인스트럭션들이 CPU에서 하나씩 처리 되는 것이죠.
여담으로 프로그래밍 관점에서 볼 때 0과 1의 의미는 조금 다르게 해석됩니다.
일반적으로 0은 False 1을 포함한 0이외의 모든 값은 True로 인식된다는 점 기억해두세요.