어휴 .. 혼자 공부하기 힘들어서 신청했는데
오랜만에 공부라는 걸 하려니까
또 벼락치기 하게 되네요.
다음 주는 일찍 끝내 보도록 ㅎ 🥹
혼공 컴운 1주차 시작합니다 !! 💪
01-1 컴퓨터 구조를 알아야 하는 이유
- 컴퓨터 구조를 이해하면 문제 해결 능력이 향상된다.
- 컴퓨터 구조를 이해하면 문법만으로는 알기 어려운 성능 / 용량 / 비용을 고려하며 개발할 수 있다.
01-2 컴퓨터 구조의 큰 그림
- 컴퓨터가 이해하는 두 가지 정보
1) 데이터 : 컴퓨터와 주고받는 / 내부에 저장된 정보를 데이터라 통칭하기도 함.
2) 명령어 : 컴퓨터를 실질적으로 움직이는 정보.
- 컴퓨터의 4가지 핵심 부품
중앙처리장치 (CPU) / 주기억장치 (메모리) / 보조기억장치 / 입출력장치
- 메모리 → 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품. → 프로그램이 실행되기 위해서는 반드시 메모리에 저장 되어 있어야 함 ! → 저장된 값에 빠르고 효율적으로 접근하기 위해 주소라는 개념이 사용됨. (메모리에 저장된 값의 위치는 주소로 앎)
- CPU
→ 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품. ( ALU, 레지스터 , 제어장치 ) - 보조기억장치 → 전원이 꺼져도 보관될 프로그램을 저장하는 부품. → 메모리는 실행할 정보를 저장하고, 보조기억장치는 보관할 정보를 저장한다.
- 입출력장치 → 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
- 메인보드 (마더보드) → 여러 컴퓨터 부품을 연결. / 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음.
- 시스템 버스 → 컴퓨터의 네 가지 핵심 부품이 서로 정보를 주고받는 통로 ( 주소 버스, 데이터 버스, 제어 버스 )
02-1 0과 1로 숫자를 표현하는 방법
정보 단위
비트 ( bit ) : 0과 1을 표현하는 가장 작은 단위
워드 (word) : CPU가 한 번에 처리할 수 있는 정보의 크기 단위 ( 하프 워드, 풀 워드, 더블 워드 )
이진법 (binary) : 0과 1로 수를 표현하는 방법
+) 0과1로 음수 표현하기 : 2의 보수
→ 어떤 수를 그보다 큰 2ⁿ 에서 뺀 값
십육진법
→ 이진법으로는 숫자의 길이가 너무 길어지기 때문.
TIP 🌟 십육진수 >>>> 이진수 변환
02-2 0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
문자 집합 (character set) : 컴퓨터가 이해할 수 있는 문자의 모음
인코딩 (encoding) : 코드화하는 과정, 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
디코딩 (decoding) : 코드를 해석하는 과정, 0과 1로 표현된 문자 코드를 문자로 변환하는 과정
아스키 코드
- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자
- 7비트로 하나의 문자 표현 (128개보다 많은 문자를 표현할 수 없음 )
EUC - KR
- KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식
- 완성형 인코딩
- 글자 하나 하나에 2바이트 크기의 코드 부여
(문제점) 모든 한글을 표현하기엔 부족함, 언어별 인코딩을 국가마다 하게 되면 다국어를 지원하는 프로그램을 개발할 때엔 언어별 인코딩 방식을 모두 이해해야 한다.
유니코드
- 통일된 문자 집합
- 한글, 영어, 화살표와 같은 특수 문자, 심지어 이모티콘까지
- 유니코드의 인코딩 방식 ( utf-8, utf-16, utf-32 …)
03-1 소스 코드와 명령어
고급 언어와 저급 언어
개발자가 작성한 소스코드 ( 자바, C…) : 고급언어 >>>> 저급 언어 (명령어)
- 고급 언어 : 개발자가 이해하기 쉽게 만든 언어
- 저급 언어: 컴퓨터가 이해하고 실행하는 언어
⤷ 기계어(이진수, 십육진수) / 어셈블리어 ( 읽기 쉽게 번역한 기계어)
컴파일 언어와 인터프리티 언어
컴파일 언어
→컴파일 언어로 작성된 ( ex C언어) 소스 코드는 컴파일러 (컴파일을 수행해 주는 도구) 에 의해 저급 언어로 변환되고 (이 과정을 컴파일 이라고 함) , 컴파일 결과로 저급 언어인 목적 코드가 발생. ( 한 줄씩 실행 X >> 전체를 통채로 컴파일 )
인터프리티 언어
- 인터프리터에 의해 한 줄씩 실행
- 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음
- 소스 코드를 한 줄씨기 저급 언어로 변환하여 실행해 주는 도구를 인터프리터라고 함
03-2 명령어의 구조
명령어의 구조
연산 코드 / 오퍼랜드
- 연산 코드 : 명령어가 수행할 연산
- 오퍼랜드 : 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치 (주소 필드)
⤷오퍼랜드가 없는 경우도 있고 여러 개가 있는 경우도 있다.
연산 코드
- 데이터 전송 / 산술 논리 연산 / 제어 흐름 변경 / 입출력 제어
- 연산 코드의 종류 & 생김새는 CPU 마다 다릅니다.
명령어 주소 지정 방식
→ 연산에 사용할 데이터가 지정된 위치를 찾는 방법
→ 유효 주소(연산에 사용할 데이터가 저장된 위치) 찾는 방법
→ 다양한 명령어 주소 지정 방식들
: 즉시 주소 지정 방식, 직접 주소 지정 방식, 간접 주소 지정 방식, 레지스터 주소 지정 방식,
레지스터 간접 주소 지정 방식
기본 미션
메모리
1101 → 0010 → 0011
0011 (2)
선택 미션
스택과 큐의 개념 정리
스택 (stack)
- 순서대로 들어와서 가장 나중에 저장한 데이터 가장 먼저 꺼내기
- LIFO (후입선출)
- push 새로운 데이터 저장 / pop 저장된 데이터 꺼내는 명령어
큐 (queue)
- 가장 먼저 저장된 데이터부터 빼내는 데이터 관리 방식
- FIFO (선입선출)
다음 주도 화이팅 ✏️✨
'혼공컴운' 카테고리의 다른 글
[혼공컴운] Ch 12~13 __ 혼공학습단 11기 5주차 (1) | 2024.02.08 |
---|---|
[혼콩컴운] Ch 09 ~ 11 __ 혼공학습단 11기 4주차 (2) | 2024.01.31 |
[혼공컴운] Ch 06 ~ 08 _ 혼공학습단 11기 3주차 (2) | 2024.01.21 |
Chapter 04-2 레지스터 (2) | 2024.01.14 |
[혼공컴운] Ch 04 ~ 05 _ 혼공학습단11기 2주차 (0) | 2024.01.14 |