아래는 hello.c 소스코드이다.
#include <stdio.h>
int main() {
printf("Hello, World\n");
return 0;
}
이 hello 프로그램은 프로그래머가 에디터로 작성한 소스 프로그램(= 소스파일)로 생명을 시작하며, hello.c라는 텍스트 파일로 저장된다.
소스 프로그램은 0 또는 1로 표시되는 비트(Bit)들의 연속이며, 바이트(Byte)라는 8비트 단위로 구성된다.
ex) 00011001
여기서 각 바이트는 프로그램의 텍스트 문자를 나타낸다.
아쉽게도 컴퓨터는 인간과 다르게 텍스트 문자를 이해하지 못한다. 그렇기 때문에 인간은 ASCII 코드를 통해 컴퓨터와 대화를 하는 것이다.

hello 프로그램은 연속된 바이트들로 파일에 저장된다.
각 바이트는 특정 문자에 대응되는 정숫값을 갖는다.
.
.
.
hello.c처럼 오로지 아스키 문자들로만 이루어진 파일들은 텍스트 파일 이라고 부른다. 다른 모든 파일들은 바이너리 파일 이라고 한다
데이터를 나타내는 최소 단위. 모든 데이터는 0과 1의 조합으로 구성되는데, 이 0 또는 1이 하나의 비트가 됨. 1개의 비트는 두 가지 상태를 나타낼 수 있으므로 n 개의 비트로는 2ⁿ가지의 상태를 나타낼 수 있음.
라고 구글에 나와있다.
결론적으로 비트는 0 혹은 1의 숫자라고 볼 수 있다.
모든 시스템 내부의 정보는 비트들로 표시된다.
(모든 시스템 내부의 정보: 디스크 파일, 메모리상의 프로그램, 데이터, 네트워크를 통해 전송되는 데이터)
서로 다른 객체들을 구분하는 유일한 방법은, 이들을 바라보는 Context에 의해서다.
일례로 다른 컨텍스트에서는 동일한 일련의 바이트가 정수, 부동소수, 문자열 또는 기계어 명령을 의미할 수 있다.
.
.
.
혼자 적으면서 보니 무슨 말인지 잘 모를수도 있을 것 같아서 비유를 해보았다.
음악에 비유를 해서
- 비트 = 개별 음표 🎵 (0과 1 같은 작은 단위)
- 컨텍스트 = 음표를 해석하는 방식 🎼 (이 음들이 어떤 곡을 이루는지)
- 정보 = 완성된 음악 🎶 (우리가 듣고 이해할 수 있는 의미 있는 형태)
즉 컨텍스트는 정보가 만들어지는 과정이고, 최종적으로 만들어지는 것이 정보(음악)이다.
컴퓨터의 숫자 표현은 우리가 알던 정수나 실수와는 같지 않다.
때문에 프로그래머로써 컴퓨터를 더 잘 이해하기 위해서 우리는 이것들을 알아야 한다.
또한 이들은 예상하지 못하는 방식으로 움직일 수 있는 유한한 근삿값이다.