[혼공학습단 10기 혼공컴운] 1주차

Builter·2023년 7월 7일
0
post-thumbnail

기본 미션

p.51의 확인 문제 3번, p.65의 확인 문제 3번 풀고 인증하기

p.51 확인 문제 3번

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

p.65 확인 문제 3번

1101(2)의 음수를 2의 보수 표현법으로 구해 보세요.
1101 → (모든 0과 1 뒤집기) 0010 → (1 더하기) 0011
1101(2)을 음수로 표현한 값은 0011(2) 입니다.

선택 미션

p.100의 스택과 큐의 개념을 정리하기

스택(Stack)

후입선출(Last In First Out) 구조의 한쪽 끝이 막혀 있는 저장 공간

PUSH: 스택에 새로운 데이터를 저장 (= 밀어 넣기)

POP: 스택에 (마지막에) 저장된 데이터 꺼내기

큐(Queue)

선입선출(First In First Out) 구조의 양쪽이 열려 있는 저장 공간

Enqueue: 큐의 마지막 부분에 새로운 데이터 저장

Dequeue: 큐의 맨 앞쪽 데이터 꺼내기

01장 컴퓨터 구조 시작하기

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

문제 해결과 성능, 용량, 비용

(+ 아직 비전공자의 관점에서 문제 해결에 직접적으로 필요한 경우는 드물다고 생각한다. 코딩 테스트나 기술 면접 같은 경우라면 모르겠지만 말이다.)

(+ 반면 좀 더 크게 다가온 건, 성능/용량/비용이다. 전역 후 컴퓨터를 맞출 때 다나와를 보고 있을 때나, 작업 관리자에서 낯선 단어를 헤치고 응답 없는 프로세스를 꺼야 할 때, IT 유튜버들이 CPU 클럭과 메모리 대역폭이 어떻게 되니, 이런 이야기들을 들을 때 어림짐작으로만 대충 그런 뜻이겠거니 하는 순간이 많았다. 이 책에서는 그 말이 무슨 의미인지를 알려주는 데 있어 큰 의의가 있다고 생각한다. 단순히 기술적인 내용을 나열한 것이 아닌, 명쾌한 비유를 들고 설명해 준 덕분에, 이 두꺼운 책을 덮어버리지 않고 나아갈 수 있었다.)

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

데이터, 명령어, CPU, 메모리, 보조기억장치, 입출력장치

정적 정보인 데이터는 명령어를 통해 조작되고 컴퓨터를 동작시킨다.

메모리(RAM)에는 실행되는 프로그램의 명령어와 데이터가 저장되어 있고,
CPU는 메모리에서 명령어를 읽고→해석하고→실행한다.
보조기억장치는 컴퓨터의 전원이 꺼져도 기억할 내용을 저장하고,
입출력장치는 사용자가 컴퓨터 내부가 정보를 교환할 수 있도록 해준다.

컴퓨터 부품을 연결해 주는 메인보드(또는 마더보드)는 '버스'라는 통로를 통해 서로 정보를 주고받는데, 위의 네 가지 핵심 부품을 연결하는 것은 '시스템 버스'다.

02 데이터

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

컴퓨터는 비트(0과 1 → 이진법)로 정보를 이해할 수 있다.

이진법은 2의 보수(보충수)로써 음수를 표현할 수 있다.

십육진법을 통해 이진법보다 짧은 숫자를 표현할 수 있다.
십육진법은 0~9와 A~F를 통해서 표현할 수 있다.

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

인코딩과 디코딩

컴퓨터가 인식하는 문자 집합에서, 문자와 숫자로 전환하는 문자 인코딩/디코딩 과정이 필요하다.

한글 인코딩에는 완성된 글자를 표현하는 완성형 인코딩 방식인 EUC-KR과 초성, 중성, 종성 코드의 조합으로 하나의 글자를 만드는 조합형 인코딩 방식이 있다.

하지만 모든 한국어를 표현할 수 없다는 한계로, 전 세계 모든 문자를 표현할 수 있는 통일된 방식인 유니코드(UTF-8)를 사용한다.

(+ 운영체제에 따른 차이로, 윈도에서 맥으로 넘어가고 나서 한글이 깨지거나, 자모가 초중종성이 풀리는 현상이 가끔 발생한다.)

03 명령어

03-1 소스 코드와 명령어

명령어는 인간이 이해할 수 있는 고급 언어에서 컴퓨터가 직접 이해할 수 있는 저급언어로 변환된다.

저급언어에는 명령어 비트(0과 1)로 이루어진 기계어와, 기계어를 읽기 편한 형태로 번역한 어셈블리어가 있다.
(+ 내가 좋아하는 게임인 롤러코스터 타이쿤이 어셈블리어로 개발했다는 사실에 경악을 금치 못했다. 그 복잡한 게임을?)

고급언어에는 소스 코드 전체가 저급언어로 변환되는 컴파일 언어와 한 줄씩 실행되는 인터프리터 언어가 있다. 다만, 두 언어의 경계는 명확지 않을 수 있다.

03-2 명령어의 구조

연산코드와 오퍼랜드

연산 코드는 명령어가 수행할 연산, 오퍼랜드는 연산에 사용할 데이터(또는 그 위치)다.

주소 지정 방식을 통해 연산에 사용할 데이터(= 유효 주소) 위치를 찾는다.
주소 지정 방식에는 즉시/직접/간접/레지스터/레지스터 간접 주소 방식이 있다.

profile
Build Myself

0개의 댓글