Ch1. 컴퓨터 구조 시작하기
01-1 컴퓨터 구조를 알아야 하는 이유
- 문제 해결
컴퓨터를 미지의 대상이 아닌 분석의 대상으로 인식 가능
- 성능, 용량, 비용 고려
다양한 요소를 고려하는 개발자가 되기 위해 필요
01-2 컴퓨터 구조의 큰 그림
- 컴퓨터가 이해하는 정보
- 데이터
숫자, 문자, 이미지, 동영상 등 정적인 정보
- 명령어
데이터를 움직이고 컴퓨터를 작동시키는 정보
- 메인보드(마더보드)에 연결 되는 핵심 부품들
- 메모리
현재 실행되는 명령어, 데이터 저장
- 중앙 처리 장치(CPU)
명령어를 처리함 -> 컴퓨터의 두뇌
- 제어장치: 메모리에게 제어 신호 전송
- ALU: 연산 수행
- 레지스터: 메모리에게 받은/연산 결과 명령어/데이터 저장
- 보조기억장치
전원이 꺼져도 데이터를 보존
- 입출력장치(주변 장치)
외부에 연결되어 내부와 정보 교환
- 시스템 버스
- 주소 버스
주소를 주고 받음
- 데이터 버스
명령어, 데이터를 주고 받음
- 제어 버스
제어 신호를 주고 받음
기본미션: p. 51의 확인 문제 3번 풀고 인증하기
프로그램이 실행되려면 반드시 메모리에 저장 되어 있어야 합니다.
Ch2. 데이터
02-1 0과 1로 숫자를 표현하는 방법
- 정보 단위
- 비트
0과 1을 나타내는 가장 작은 정보 단위
n개의 전구 -> 2n가지 정보 표현 가능
- 1 byte = 8 bit
- 1000 byte = 1 kB
- 1000 kB = 1 MB
- 1000 MB = 1 GB
- 1000 GB = 1 TB
- 이진법
0과 1만으로 모든 숫자를 표현하는 방법
숫자가 1을 넘어가는 시점에서 자리 올림
- 이진수의 음수 표현
2의 보수 -> 모든 0, 1을 뒤집고 1을 더함
- 십육진법
수가 15를 넘어가는 시점에서 자리 올림
- 십육진수의 이진수 변환
십육진수의 한글자를 4비트의 이진수로 간주
기본미션: p. 65의 확인 문제 3번 풀고 인증하기
1101(2)의 음수를 2의 보수 표현법으로 구해 보세요.
1101 -> 0010 -> 0011
02-2 0과 1로 문자를 표현하는 방법
-
문자 집합과 인코딩
- 문자 집합
컴퓨터가 인식하고 표현할 수 있는 문자 모음
- 문자 인코딩
문자를 컴퓨터가 이해할 수 있게 변환하는 과정
- 문자 디코딩
문자를 사람이 이해할 수 있게 변환하는 과정
-
아스키 코드
영어 알파벳, 아라비아 숫자, 일부 특수문자를 포함하는 문자 집합
-
EUC-KR
한글 인코딩을 위한 완성형 인코딩 문자 집합
- 완성형 인코딩
완성 된 글자에 숫자 부여
- 조합형 인코딩
초성, 중성, 종성 비트 각각 할당
-
유니코드와 UTF-8
대부분 나라의 문자, 특수문자 등을 모두 아우르는 표준 문자 집합
Ch3. 명령어
03-1 소스코드와 명령어
-
고급 언어와 저급 언어
- 고급 언어
사람을 위한 언어
- 저급 언어
컴퓨터를 위한 언어
- 기계어
0과 1의 명령어 비트로 이루어진 언어
- 어셈블리어
기계어를 읽기 쉽게 번역한 언어
-
컴파일 언어와 인터프리터 언어
- 컴파일 언어
컴파일러에 의해 소스 코드가 저급 언어로 변환 되는 언어
소스 코드 -> 컴파일러 -> 목적 코드
- 인터프리터 언어
인터프리터에 의해 소스 코드가 한 줄씩 실행 되는 언어
03-2 명령어의 구조
- 연산 코드 (연산자)
명령어가 수행할 연산
- 데이터 전송
- 산술/논리 연산
- 제어 흐름 변경
- 입출력 제어
- 오퍼랜드 (피연산자)
연산에 사용할 데이터의 위치
- 주소 지정 방식
연산에 사용할 데이터 위치를 찾는 방법
- 즉시 주소 지정 방식
연산에 사용할 데이터
- 직접 주소 지정 방식
유효 주소
- 간접 주소 지정 방식
유효 주소의 주소
- 레지스터 주소 지정 방식
연산에 사용할 데이터를 저장한 레지스터
- 레지스터 간접 주소 지정 방식
연산에 사용할 데이터를 메모리에 저장하고 주소를 저장한 레지스터
선택 미션: p. 100의 스택과 큐의 개념을 정리하기
- 스택 (LIFO)
한쪽 끝이 막혀 있는 저장 공간
나중에 저장한 데이터를 가장 먼저 빼내는 데이터 관리 방식
- push로 데이터 저장, pop으로 데이터 꺼냄
- 큐(FIFO)
한쪽으로 데이터 저장, 반대로 데이터 빼냄
가장 먼저 저장된 데이터부터 빼내는 데이터 관리 방식