아래의 hello
프로그램이 실행되는 과정을 알아보자!
hello.c
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
이 hello
프로그램은 프로그래머가 에디터로 작성한 소스 프로그램(= 소스파일)로 생명을 시작하며, hello.c
라는 텍스트 파일로 저장된다.
hello.c
프로그램은 연속된 바이트들로 파일에 저장된다!
소스 프로그램은 0 또는 1로 표시되는 비트들의 연속이며, 바이트라는 8비트 단위로 구성된다.
각 바이트는 프로그램의 텍스트 문자를 나타낸다.
대부분의 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII) 표준을 사용하여 표시한다.
아스키 표준은 각 문자를 바이트 길이의 정수 값으로 나타낸다.
각 바이트는 특정 문자에 대응되는 정수 값을 갖는다.
ex)
바이트35
👉🏻 문자#
바이트105
👉🏻 문자i
바이트10
👉🏻 문자\n
(newline 문자)
hello.c
처럼 오로지 아스키 문자들로만 이루어진 파일들을 텍스트 파일이라고 부른다.
(다른 모든 파일들은 바이너리 파일이라고 부른다.)
모든 시스템 내부의 정보는 비트들로 표시된다.
모든 시스템 내부의 정보
- 디스크 파일, 메모리상의 프로그램, 데이터, 네트워크를 통해 전송되는 데이터
서로 다른 객체들을 구분하는 유일한 방법은, 이들을 바라보는 컨텍스트에 의해서다.
일례로 다른 컨텍스트에서는 동일한 일련의 바이트가 정수, 부동소수, 문자열 또는 기계어 명령을 의미할 수 있다.
컴퓨터 내에서 숫자들의 표현이 우리가 알던 정수나 실수와 같지 않기 때문에 프로그래머로서 이들에 대해 이해할 필요가 있다.
이들은 예상하지 못하는 방식으로 움직일 수 있는 유한한 근사값이다.