1주 차 목표
# | 진도 | 기본 미션 | 선택 미션 |
1주차 (7/3 ~ 7/9) |
Chapter 01 ~ 03 | p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기 | p. 100의 스택과 큐의 개념을 정리하기 |
첫 주라 개념이 쉬운 대신에 페이지 수가 상당했다.
다른 사람들처럼 전부 예쁘게 정리하려 하였으나...
1장 정리 겨우 해놓고 깜냥이 안 되는 것을 느끼고
미션이나 꾸준히 하자는 생각이 들더라 ㅋㅋㅋ
마저 정리할 용기가 생긴다면 다시 시도해 보겠다.
기본 미션
p.51 확인 문제 3번
Q. 다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요.
"프로그램이 실행되려면 반드시 ( )에 저장되어 있어야 합니다."
A. 메모리
p.65 확인 문제 3번
Q. 1101⑵의 음수를 2의 보수 표현법으로 구해 보세요.
[1] [1] [0] [1]
↓
[ ] [ ] [ ] [ ]
↓
[ ] [ ] [ ] [ ]
"1101⑵을 음수로 표현한 값은 입니다.
A. 0011
선택 미션
p. 100의 스택과 큐의 개념을 정리하기
스택 Stack
후입선출 / Last In First Out / LIFO
먼저 들어간 데이터가 제일 늦게 나온다. ex) 하노이 탑, DFS
데이터가 들어오는 순서
5 4 3 2 1
데이터가 나오는 순서
1 2 3 4 5
-> 스택에 새 데이터를 저장하는 명령어는 Push, 꺼내는 명령어는 Pop이다.
큐 Queue
선입선출 / First In First Out / FIFO
먼저 들어간 데이터가 제일 빨리 나온다. ex) BFS
데이터가 들어오는 순서
5 4 3 2 1
데이터가 나오는 순서
5 4 3 2 1
메모
02 - 1: 0과 1로 숫자를 표현하는 방법
1. KB, MB 등 단위는 이전 단위를 1000개 묶어 표현한 단위로, 1024개 묶어 표현한 단위는 KIB, MIB 등 따로 존재.
2. 워드(word): CPU가 한 번에 처리할 수 있는 데이터 크기.
3. 음수, 양수를 구분하기 위해 플래그(flag)라는 정보가 같이 저장됨. 그런데, 정수형 자료형에서 부호 구분을 위해 맨 앞에 0 또는 1이 오는 것으로 알고 있는데 이와는 다른 것인가?
02 - 2: 0과 1로 문자를 표현하는 방법
1. EUC-KR: KS X 1001, KS X 1003 문자 집합 기반인 완성형 한글 인코딩 방식. 표현 가능한 문자가 적고 다른 언어에 다른 인코딩 방식을 적용해야 한다는 번거로움 존재.
2. 유니코드: 모든 언어와 이모티콘 등 모든 문자를 포함하는 통일된 문자 집합. 인코딩 방식으로는 UTF-8, UTF-16, UTF-32 등이 있음. 코드 포인터를 인코딩 된 값으로 삼지 않고, 인코딩 방식에 따라 다른 변환 사용.
3. 완성형 인코딩보다 조합형 인코딩이 훨씬 효율적일 것 같은데 왜 모두 완성형 인코딩인 것인가?
03 - 1: 소스 코드와 명령어
1. 컴파일(compile) 언어는 컴파일러(compiler)가 전체 코드를 이상이 없는지 훑어보며 저급 언어로 컴파일함. 이렇게 저급 언어로 변환된 코드를 목적 코드(object code)라고 함. 인터프리터 언어는 인터프리터(interpreter)에 의해 한 줄씩 변환.
03 - 1 추가 강의: C언어의 컴파일 과정
1. 소스코드 -> 전처리기(preprocessor) -> 컴파일러(compiler) -> 어셈블러(assembler) -> 링커(linker) -> 실행 파일
- 전처리(preprocessing): 컴파일하기 전에 처리할 과정. 매크로 변환, include 한 소스 코드 가져오는 등.
- 컴파일(compile): 저급 언어(어셈블리어)로 변환.
- 어셈블(assembling): 어셈블리어를 기계어로 변환. 이 과정에서 목적 코드가 됨.
- 링킹(linking): 각기 다른 목적 코드를 하나의 실행파일로 연결.
03 - 2: 명령어의 구조
1. 명령어는 연산 코드(operation code)와 오퍼랜드(operand)로 이루어짐.
2. 오퍼랜드는 연산에 사용할 데이터 or 연산에 사용할 데이터가 저장된 위치를 의미하며, 주로 후자의 값이 더 많이 담기기 때문에 주소 필드라고 부르기도 함. 오퍼랜드는 0부터 n까지 여러 개 가질 수 있음.
3. 연산 코드 유형은 크게 네 가지로 나눌 수 있음.
- 데이터 전송
- 산술/논리 연산
- 제어 흐름 변경
- 입출력 제어
4. 주소 지정 방식(addressing mode): 유효 주소(effective addess, 연산에 사용할 데이터가 저장된 위치)를 찾는 방법
- 즉시 주소 지정 방식(immediate addressing mode): 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시 (2번의 전자)
데이터의 크기가 제한되나 주소를 찾는 과정이 없기 때문에 빠름
- 직접 주소 지정 방식(direct addressing mode): 오퍼랜드 필드에 유효 주소를 직접 명시. 즉시 주소 지정 방식보다는 나아졌으나, 여전히 연산 코드의 길이만큼 오퍼랜드 필드의 길이가 짧아져있음.
- 간접 주소 지정 방식(indirect addressing mode): 오퍼랜드 필드에 유효 주소의 주소를 명시. 표현 가능한 범위는 넓어졌으나 메모리 접근 과정이 길어져 느림.
- 레지스터 직접 주소 지정 방식(register addressing mode): 데이터를 레지스터에 저장(유효 주소) -> 레지스터를 오퍼랜드 필드에 명시. 레지스터는 CPU 내부에 있기 때문에 메모리에 접근하는 것보다 빠름.
- 레지스터 간접 주소 지정 방식(register indirect addressing mode): 데이터를 메모리에 저장(유효 주소) -> 유효 주소의 주소를 레지스터에 저장 -> 레지스터를 오퍼랜드 필드에 명시.
강의
https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl
혼공
혼공컴운 도서 구매하기
https://www.hanbit.co.kr/store/books/look.php?p_code=B9177037040&utm_source=hongong
'공부 기록 > 혼공학습단' 카테고리의 다른 글
혼공학습단 10기 - 혼공컴운 (5주차) (0) | 2023.08.13 |
---|---|
혼공학습단 10기 - 혼공컴운 (4주차) (0) | 2023.07.30 |
혼공학습단 10기 - 혼공컴운 (3주차) (0) | 2023.07.23 |
혼공학습단 10기 - 혼공컴운 (2주차) (0) | 2023.07.13 |
혼공학습단 10기 - 혼공컴운 (0주차) (0) | 2023.07.02 |