컴퓨터에서 데이터를 저장하고 처리할 때 사용하는 기본 단위는 비트(bit).
컴퓨터 저장의 가장 작은 단위

데이터를 저장의 기본 단위
데이터 처리의 기본 단위
Address 메모리 내부의 상대적인 위치
Contents: 데이터가 Memory Cell에 저장됨.
(각각의 Memory Cell은 1Byte.)
각각의 Memory Cell은 주소가 있으며, 주소를 통해 저장 위치를 인지할 수 있다.
응용 소프트웨어: 워드 프로세서, 미디어 플레이어, 웹 브라우저 같은 프로그램으로, 수백만 줄의 코드로 작성되며 고급 라이브러리를 사용. 주로 고급 프로그래밍 언어(HLL)인 C, C++, Java 등으로 작성.
컴퓨터 하드웨어: CPU, 메모리, 입출력 장치(I/O) 등으로 구성되어 있으며, 아주 간단한 저수준 명령어만 실행할 수 있음.
=> 중간에 필요한 것: 고급 언어와 단순한 하드웨어 사이를 연결해주는 중간 단계가 필요합. 이를 위해 운영 체제나 컴파일러가 사용.
기계어 명령어: 컴퓨터가 이해하고 실행할 수 있는 비트들의 집합. 예를 들어, 명령어 10011001010000은 컴퓨터에게 두 숫자를 더하라고 지시.
초기 프로그래머들: 초창기에는 컴퓨터와 이진수(바이너리)로 직접 소통.
문제점: 이진수로 작업하는 것은 너무 번거롭고 인식하기 어려움.
해결책: 인간이 이해하기 쉬운 표기법(어셈블리어)을 고안하고, 이를 바이너리 코드로 번역하는 방법을 개발. 이 과정은 어셈블러가 담당.
어셈블리어: 프로그래머는 add A, B처럼 간단한 명령어를 작성하면, 어셈블러가 이를 10011001010000 같은 이진 명령어로 변환.
특징: 어셈블리어는 컴퓨터가 따를 각 명령어에 대해 한 줄씩 작성해야 함. 즉, 프로그래머가 하드웨어 수준에서 작업을 해야 한다.
문제점: 프로그래머가 컴퓨터처럼 사고해야 하기 때문에 매우 복잡하고 번거로움.
해결책: 더 강력한 고급 언어가 개발되어, 사람이 이해하기 쉽게 프로그램을 작성하고 이를 기계어로 번역할 수 있어야 함.
예시: C, C++, Java
컴파일러(Compiler): 고급 언어(HLL)로 작성된 코드를 어셈블리어로 번역.
어셈블러(Assembler): 어셈블리어를 기계어(Machine Language)로 변환하여 컴퓨터가 실행할 수 있도록 함.
이 두 단계는 고급 언어로 작성된 프로그램이 최종적으로 컴퓨터에서 실행될 수 있도록 하는 과정.
