1. 컴퓨터 구조의 큰 그림
1) 컴퓨터가 이해하는 정보
- 컴퓨터가 이해할 수 있는 정보는 명령어와 데이터
- 명령어
- 수행할 동작과 수행할 대상으로 이루어짐
- 데이터를 활용하는 정보
- 데이터
- 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
- 명령의 대상, 명령어의 재료, 명령어에 종속적인 정보
2) 컴퓨터의 핵심 부품
(1) CPU
- 명령어와 데이터를 읽어 들이고 해석하고 실행하는 부품
- 인간으로 비유했을 때 두뇌에 해당함
- 산술논리연산장치, 제어장치, 여러 레지스터들이 존재함
- 산술논리연산장치
- 연산을 수행할 회로로 구성되어 있는 일종의 계산기
- 제어장치
- 특정 부품에 신호를 보내 동작시키는 전기 신호를 보내는 장치
- 레지스터
- CPU 내부 작은 임시 저장장치
- 명령어와 데이터를 처리하는 과정의 중간값 저장
- CPU가 처리하는 명령어가 반드시 저장되므로 프로그램이 어떻게 실행되는지 확인 가능
(2) 메모리
- 실행 중인 프로그램을 구성하는 명령어와 데이터를 저장하는 부품
- 주소
- 메모리 속 명령어와 데이터에 쉽게 접근할 수 있도록 주소가 있음
- CPU에서 원하는 정보에 접근하기 위해서는 주소가 필요함
- 휘발성
- 컴퓨터에 전원이 연결되어 있는 동안 메모리에 저장된 정보가 남아 있음
- 전원이 꺼질 경우 컴퓨터 실행 시 저장되었던 정보가 모두 삭제됨
(3) 보조기억장치
- 전원이 꺼져도 정보가 삭제되지 않는 정보를 저장하는 부품
- 메모리와 달리 비휘발성이며 보괄할 프로그램을 저장함
- CPU는 보조기억장치에 저장된 프로그램을 곧장 가져와 실행할 수 없으므로 RAID를 활용함
(4) 입출력장치
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 보조기억장치와 입출력장치를 묶어 주변장치라고도 함
(5) 메인보드
- 위와 같은 부품들을 모두 고정하고 서로 연결하는 기판
- 버스
- 시스템 버스
2. 컴퓨터가 이해하는 정보
1) 표현 단위
- 비트(bit)
- 0과 1을 나타내는 가장 작은 정보의 단위
- N비트는 2N개의 정보를 표현할 수 있음
| 구분 | 단위 |
|---|
| 1byte | 8bit |
| 1kB | 1,000byte |
| 1MB | 1,000kB |
| 1GB | 1,000MB |
- 워드(word)
- CPU가 한번에 처리할 수 있는 데이터의 크기
- 대부분 현대 컴퓨터 워드 크기는 32bit, 64bit임
2) 숫자 표현
(1) 2진법
- 숫자 1을 넘어가는 시점에 자리올림해 0, 1로 모든 수를 표현
- 숫자 뒤에 아래첨자로 (2)를 붙이거나 2진수 앞에 0b를 붙임
(2) 16진법
- 숫자 16을 넘어가는 시점에 자리올림해 모든 수를 표현
- 2진법으로 표현 시 숫자의 길이가 너무 길어지는 단점을 보완하기 위해 사용
- 숫자가 두 자리수로 넘어갈 경우 A, B, C, D, E, F를 사용
- 숫자 뒤에 아래첨자로 (16)를 붙이거나 16진수 앞에 0x를 붙임
(3) 부동 소수점
- 소수점을 나타내기 위해 사용하는 표현 방식
- 2진수의 지수와 가수를 IEEE 754 방식을 통해 저장함
- 10진수 체계의 소수를 2진수 또는 16진수 체계의 소수로 바꾸는 과정에서 그 수가 딱 떨어지지 않을 수 있으므로 일부 소수점을 생략함
- 따라서 같은 결과가 나옴에도 이를 같은 숫자로 보지 않는 문제가 발생함
3) 문자 표현
(1) 문자 집합
- 컴퓨터가 이해할 수 있는 문자들의 집합
- 아스키, KS X 1001, KS X 1003, 유니코드가 있음
- 오른쪽으로 갈수록 더 많은 문자를 표현할 수 있음
(2) 문자 인코딩
- 사람이 이해하는 문자 집합의 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
- 아스키 인코딩
- 하나의 문자를 표현하기 위해 8bit 사용
- 그 중 1bit는 오류 검출을 위해 사용되는 패리티 비트
- 7bit로 이루어진 코드를 대응해 인코딩함
- KS X 1001, KS X 1003 인코딩
- 아스키로 한글을 표기할 수 없어 만들어진 문자 집합
- 2byte로 하나의 한글 글자를 표현하며 EUC-KR로 인코딩함
- 유니코드 인코딩
- 현대 가장 많이 사용되는 표준 문자 집합
- UTF-8, UTF-16, UTF-32 등으로 인코딩함
- base64
- 문자뿐만 아니라 이진 데이터까지 변환할 수 있는 인코딩 방식
- 64개의 문자를 사용하므로 6bit씩 끊어서 아스키 문자로 변환함
- 6bit로 끊어지지 않는다면 해당 자리를 0으로 채우는 패딩이 발생함
(3) 문자 디코딩
- 0과 1로 이루어진 문자 코드를 사람이 이해하는 문자 집합의 문자로 변환하는 과정