CS/혼공컴구운체

[혼공컴운] 혼공단 1주차: 01 ~ 03

동백05 2024. 1. 7. 23:16

01 컴퓨터 구조 시작하기

01-1 컴퓨터 구조를 알아야 하는 이유

컴퓨터 구조는 개발자가 되려면 반드시 알아야 하는 기본 지식이다.

컴퓨터 구조를 이해하면 컴퓨터를 '미지의 대상'에서 '분석의 대상'으로 인식하게 된다.

컴퓨터 구조를 이해하면 문법만으로는 알기 어려운 성능/용량/비용을 고려하여 개발할 수 있다.

 

01-2 컴퓨터 구조의 큰 그림 그리기

컴퓨터가 이해하는 정보

1) 데이터

- 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보

2) 명령어

- 데이터를 움직이고 컴퓨터를 작동시키는 정보

 

컴퓨터의 네 가지 핵심 부품

1) 중앙처리장치

- Central Processing Unit, CPU

- 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석하고 실행하는 부품

- 산술논리연산장치: 계산기

- 레지스터: 임시 저장 장치

- 제어장치: 제어신호라는 전기 신호를 내보내고 명령어를 해석

2) 주기억장치

- 메모리

- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 함

- 저장된 명령어와 데이터의 위치는 정돈되어 있어야함 -> 주소 사용

3) 보조기억장치

- 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조하는 저장 장치

- 하드디스크, SSD, USB 메모리, DVD 등

4) 입출력장치
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

- 마이크, 스피커, 프린터, 마우스, 키보드 등

 

메인보드

- 컴퓨터의 핵심 부품들을 부착하는 판

시스템 버스

- 컴퓨터의 네 가지 핵심 부품이 서로 정보를 주고받는 통로

- 주소 버스: 주소를 주고받음

- 데이터 버스: 명령어와 데이터를 주고받음

- 제어 버스: 제어 신호를 주고받음

 

[ 기본미션 ]
03. 프로그램이 실행되려면 반드시 [ 메모리 ]에 저장되어 있어야 한다.

02 데이터

02-1 0과 1로 숫자를 표현하는 방법

비트

- 0과 1을 나타내는 가장 작은 정보 단위

 

1바이트 8비트
1킬로바이트 1,000바이트
1메가바이트 1,000킬로바이트
1기가바이트 1,000메가바이트
1테라바이트 1,000기가바이트

 

이진법

- 0과 1만으로 모든 숫자를 표현하는 방법

- 예) 9 = 1001

이진수의 음수 표현

- 2의보수

- 모든 0과 1을 뒤집고 거기에 1을 더한 값

- 예) 1011 -> 0100 -> 0101

- 플래그: 이 수가 양수인지 음수인지 구분

 

십육진법

- 수가 15가 넘어가는 시점에 자리 올림을 하는 숫자 표현 방법

[ 기본미션 ]
1101(2)의 음수를 2의 보수 표현법으로 구해보시오
1101 -> 0010 -> 0011
1101(2)을 음수로 표현한 값은 0011(2)이다.

 

02-2 0과 1로 문자를 표현하는 방법

문자집합

- 컴퓨터가 인식하고 표현할 수 있는 문자의 모음

문자 인코딩

- 문자를 0과 1로 변환하여 컴퓨터가 이해할 수 있도록 하는 변환 과정

문자 디코딩

- 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정

 

아스키코드

- 아스키문자: 초창지 문자 집합 중 하나로, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수문자를 포함함

- 아스키 문자 집합에 0부터 127까지의 수가 할당됨

EUC-KR

- 한글을 2바이트 크기로 인코딩 할 수 있는 완성형 인코딩 방식

유니코드

- 여러 나라의 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합


03 명령어

03-1 소스 코드와 명령어

고급언어

- 사람을 위한 언어

저급언어

- 컴퓨터가 직접 이해하고 실행할 수 있는 언어

- 고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어, 즉 명령어로 변환되어야 함

1) 기계어

- 0과 1의 명령어 비트로 이루어진 언어

2) 어셈블리어

- 0과1로 이루어진 기계어를 읽기 편한 형태로 번역한 언어

 

컴파일언어

- 컴파일 방식으로 작동하는 프로그래밍 언어

- 소스코드 전체가 저급 언어로 변환되어 실행되는 고급 언어

- 예) C

인터프리터언어

- 인터프리트 방식으로 작동하는 프로그래밍 언어

- 소스코드가 한 줄씩 실행되는 고급 언어

- 예) 파이썬

 

03-2 명령어의 구조

명령어

- 연산 코드와 오퍼랜드로 구성

1) 연산 코드

- 명령어가 수행할 연산, 연산자라고도 부름

- 데이터 전송, 산술/논리 연산, 제어 흐름 변경, 입출력 제어

2) 오퍼랜드 operand

- '연산에 사용할 데이터' 또는 '연산에 사용할 데이터가 저장된 위치', 피연산자라고도 부름

주소 지정 방식

- 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시

- 직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

- 간접 주소 지정 방식: 유효 주소의 주소를 오퍼랜드 필드에 명시

- 레지스터 주소 지정 방식: 직접 주소 지정 방식과 비슷하게 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시

- 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

 

[ 선택미션 ]
스택
- 한쪽 끝이 막혀 있는 통과 같은 저장 장소
- 나중에 저장한 데이터가 가장 먼저 빼지는 자료 구조(후입선출)
- PUSH: 스택에 새로운 데이터 저장
- POP: 스택 최상단 데이터 꺼내기


- 양 쪽이 뚫려있는 통과 같은 저장 장소
- 가장 먼저 저장된 데이터가 가장 먼저 빼지는 자료 구조(선입선출)


스택과 큐는 알고리즘 문제풀이를 할 때 많이 사용되는 자료구조이다.
스택: [백준/자바] 12605번 단어순서 뒤집기
큐: [백준/자바] 1158번 요세푸스 문제

 

 


1주차 후기

3학년 때 수강한 컴퓨터구조 수업 내용과 지난 학기 수강한 컴퓨터활용기초에 나온 내용들이 있어서 읽기에 수월했다.

복습하고 정리하는 느낌으로 앞으로 계속 읽어나가면 될 것 같다.