Aesthetic Algorithm

[혼공학습단] Week 1 본문

Computer Science/컴퓨터구조&운영체제

[혼공학습단] Week 1

미니튜링 2025. 7. 6. 21:23

이번 주 교재 범위는 Chap 01~03이다.

컴퓨터 구조를 이해하고, 데이터에 대해 알아보고, 명령어에 대해 정리해보는 시간을 가질 수 있었다.

 

Chapter 01. 컴퓨터 구조 시작하기

좋은 개발자가 되기 위해서는 단순히 코드만 잘 작성하면 되는 것이 아니라, 컴퓨터의 근간인 컴퓨터 구조와 운영체제를 알고 있어야 한다.

문제가 생겼을 때 컴퓨터를 내려다보며 바라볼 수 있는 문제 해결 능력을 기를 수 있고, 성능/용량/비용을 고려한 개발이 가능하다.

 

컴퓨터는 데이터명령어를 이해할 수 있는 기계이다. 

데이터는 숫자, 문자, 이미지 등을 포함한 정보이며, 컴퓨터는 0과 1만을 이해할 수 있기에 데이터는 0과 1만으로 표현되어야 한다. 

명령어는 컴퓨터를 움직일 수 있는 정보로, 예를 들어 파이썬에서 b = 5는 변수 b에 5를 저장하라는 것이 되겠다. (데이터는 5)

 

컴퓨터의 4가지 핵심 부품으로는 CPU, 메모리(주기억장치), 보조기억장치, 입출력장치가 있다.

● 메모리

현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다.

컴퓨터가 빠르게 작동하려면 메모리 속 저장된 명령어와 데이터가 잘 정돈되어 있어야 한다. 

이를 위해 '주소' 개념이 도입되는데, 메모리 내 명령어와 데이터가 저장된 위치를 특정하여 효율적인 접근을 가능케 한다.

 

● CPU

컴퓨터의 두뇌와도 같은 부품이다. 메모리에 저장된 명령어를 불러들이고, 해석하고, 실행하는 부품이다.

내부 구성 부품은 ALU, 레지스터, 제어장치 3가지로 구성되어 있다.

ALU는 산술 논리 연산 장치라고도 하며, 컴퓨터 내부 계산을 도맡아 수행한다.

레지스터는 CPU 내부의 임시 저장 장치로, 프로그램 실행에 필요한 값을 임시 저장한다.

제어장치는 제어 신호를 내보내고, 명령어를 해석하는 장치이다.

 

● 보조기억장치

메모리의 큰 단점은 전원이 꺼지면 저장된 내용이 날아간다는 것인데, 저장된 내용을 잃지 않기 위한 보조기억장치가 있다.

 

● 입출력장치

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 뜻한다.

모니터, 키보드, 마우스 등이 있다. 메모리를 보조하는 역할을 한다.

 

이러한 핵심 부품들은 메인 보드라는 판에 연결되며, 이 판에서 버스라는 통로를 통해 서로 정보를 주고받을 수 있다.

가장 중요한 버스는 이 4가지 부품들을 연결하는 시스템 버스라고 한다.

 

Chapter 2. 데이터

컴퓨터는 1보다 큰 수를 어떻게 이해할까?

우선 비트는 0과 1로 표현가능한 가장 작은 정보 단위이다.

1비트는 2가지 정보를 표현할 수 있으며, n비트는 2^n가지의 정보를 표현할 수 있다.

프로그램은 수많은 비트로 이루어져 있기에, 편의상 비트보다 더 큰 바이트, 킬로바이트 등의 단위를 사용한다.

 

● 이진법

0과 1로 수를 표현하는 방법이다.

숫자가 1을 넘어가는 시점에 자리올림한다.

이진법상 음수는 2의 보수로 표현할 수 있다.

 

● 십육진법

이진법으로는 숫자의 길이가 너무 길어지기에, 십육진법도 자주 사용한다.

수가 15를 넘어가는 시점에 자리올림한다.

 

이진수와 십육진수를 쓰는 이유는 둘 간 변환이 용이하기 때문이다.


● 문자 집합

컴퓨터가 이해할 수 있는 문자의 모음이다.

문자 집합에 속해있지 않으면 컴퓨터가 인식할 수 없다.

 

● 인코딩

어떤 값을 코드로 표현하는 방법이다.  

문자 표현 시에는 문자 집합에 속한 문자를 0, 1로 이루어진 코드로 변환하는 과정이다.

 

● 디코딩

인코딩과 반대의 개념으로, 인코딩된 문자 코드를 우리가 이해할 수 있는 문자로 변환하는 과정이다.

 

아스키 코드

알파벳, 아라비아 숫자, 일부 특수 문자 등을 포함한다. 7비트로 1개의 문자를 표현할 수 있다.

 

한글은 각 음절이 초, 중, 종성의 조합으로 이루어져 있다.

따라서, 완성형과 조합형 인코딩 2가지 인코딩이 존재한다.

 

완성형 인코딩은 하나의 글자에 고유한 코드를 부여하는 방식이고 조합형 인코딩은 초, 중, 종성을 위한 비트열을 할당하여 그것들의 조합으로 1개의 글자 코드를 완성하는 방식이다. 

 

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

 

유니코드는 모든 언어, 특수문자까지 통일된 문자 집합이다. 

많이 들어보았듯 UTF-8, UTF-16 등의 다양한 방식이 있다.

 

Chapter 03. 명령어

고급 언어는 개발자들을 위해, 그들이 쉽게 읽고 쓸 수 있게 만들어진 언어이다.

반면, 저급 언어는 컴퓨터가 이해하고 실행할 수 있는 언어이다.

 

컴파일 언어는 마치 독일어 책을 한꺼번에 한국어 책으로 번역된 것처럼, 코드가 통째로 변환되는 고급 언어다.

소스 코드는 컴파일러를 통해 컴파일이 되어 저급 언어인 목적 코드로 변환된다.

 

인터프리터 언어는 소스 코드를 한 줄 한 줄 차례로 실행할 수 있으며, 이렇게 저급 언어로 한 줄씩 실행해 주는 도구가 인터프리터이다. 소스 코드 전체가 저급 언어로 변환될 때까지 기다릴 필요가 없다.

 

하지만 모든 프로그래밍 언어가 컴파일vs인터프리터 언어로 양분되지는 않는다.

 


이번 주 숙제

p. 51의 3번

프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.

 

해설: 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하고 있는 부품이다.

 

p. 65의 3번

1101(2)의 음수를 2의 보수 표현법으로 구해 보세요.

 

해설: 1과 0을 뒤집으면 1101 -> 0010으로 변환되고, 1을 더하면 0010+0001=0011이 됩니다.