본문 바로가기

혼공컴운

[혼공컴운] Chapter 01 ~ 03 _ 혼공학습1주차

어휴 .. 혼자 공부하기 힘들어서 신청했는데

오랜만에 공부라는 걸 하려니까 

또 벼락치기 하게 되네요.

다음 주는 일찍 끝내 보도록 ㅎ 🥹

혼공 컴운 1주차 시작합니다 !! 💪


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

- 컴퓨터 구조를 이해하면 문제 해결 능력이 향상된다. 

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


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

  • 컴퓨터가 이해하는 두 가지 정보 

1) 데이터 : 컴퓨터와 주고받는 / 내부에 저장된 정보를 데이터라 통칭하기도 함. 

2) 명령어 : 컴퓨터를 실질적으로 움직이는 정보. 

  • 컴퓨터의 4가지 핵심 부품 

중앙처리장치 (CPU) / 주기억장치 (메모리) / 보조기억장치 / 입출력장치 

  1.  메모리  현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품.                                                                                  → 프로그램이 실행되기 위해서는 반드시 메모리에 저장 되어 있어야 함 !                                                                      → 저장된 값에 빠르고 효율적으로 접근하기 위해 주소라는 개념이 사용됨. (메모리에 저장된 값의 위치는 주소로 앎)
  2. CPU
    → 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품. ( ALU, 레지스터 , 제어장치 ) 
  3. 보조기억장치 → 전원이 꺼져도 보관될 프로그램을 저장하는 부품.                                                                                                      → 메모리는 실행할 정보를 저장하고, 보조기억장치는 보관할 정보를 저장한다. 
  4. 입출력장치 → 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품 
  5. 메인보드 (마더보드) → 여러 컴퓨터 부품을 연결. / 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음. 
  6. 시스템 버스  → 컴퓨터의 네 가지 핵심 부품이 서로 정보를 주고받는 통로 ( 주소 버스, 데이터 버스, 제어 버스 )

 


 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 마다 다릅니다.

 

명령어 주소 지정 방식 

→ 연산에 사용할 데이터가 지정된 위치를 찾는 방법 

  유효 주소(연산에 사용할 데이터가 저장된 위치) 찾는 방법 

  다양한 명령어 주소 지정 방식들 

      : 즉시 주소 지정 방식, 직접 주소 지정 방식, 간접 주소 지정 방식, 레지스터 주소 지정 방식, 

        레지스터 간접 주소 지정 방식 


기본 미션 

p.51 확인문제 3번

메모리 

p.65 확인문제 3번

1101 → 0010 → 0011 

0011 (2) 


선택 미션

스택과 큐의 개념 정리  

 

스택 (stack) 

-  순서대로 들어와서 가장 나중에 저장한 데이터 가장 먼저 꺼내기

- LIFO (후입선출) 

- push 새로운 데이터 저장 / pop 저장된 데이터 꺼내는 명령어 

 

큐 (queue) 

- 가장 먼저 저장된 데이터부터 빼내는 데이터 관리 방식 

- FIFO (선입선출) 

 

 

다음 주도 화이팅 ✏️✨