본문 바로가기

혼공단

[혼공컴운] 1주차(chap01~03) 컴퓨터구조와 데이터 그리고 명령어

 

✨혼공학습단 11기✨

 

 

📌1주차 목표

 


📚Chapter01  : 컴퓨터 구조 시작하기


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


데이터

컴퓨터가 이해하는 정적인 정보(숫자,문자,이미지,동영상).컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보를 가리킬때 편하게 통칭하기도

명령어

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

중앙처리장치(CPU)

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

 

-ALU(산술논리연산장치)

계산기. 컴퓨터 내부에 수행되는 대부분의 계산을 처리

-레지스터

cpu 내부의 작은 임시 저장장치. 프로그램을 실행하는데 필요한 값을 임시로 저장함.여러개의 레지스터가 존재

-제어장치

제어신호(컴퓨터 부품을 관리하고 작동시키기 위한 일종의 전기신호)라는 전기 신호를 내보내고 명령어를 해석함

주기억장치(메모리 (보통RAM))

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

 

- 저장된 값에 빠르고 효율적으로 접근하기 위해 주소라는 개념 사용

-가격이 비싸 저장용량이 적음. 전원이 꺼지면 저장된 내용을 모두 잃음

보조기억장치

전원이 꺼져도 보관할 프로그램을 저장하는 부품

 

-하드디스크,SSD,USB,DVD,CD-ROM

입출력장치

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품

 

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

메인보드

컴퓨터의 핵심 부품들이 연결된 판

 

-메인보드 내 버스라는 통로를 통해 연결된 부품들이 서로 정보를 주고 받음

시스템 버스

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

 

- 주소버스,데이터버스,제어버스 존재


📚Chapter02 : 데이터


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


비트

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

 

byte⇒KBMBGBTB

1 byte 8bit
1kB 1,000byte
1MB 1,000KB
1GB 1,000MB
1TB 1,000GB

 

이진법

0과1만으로 모든 숫자를 표현.아래첨자(2)를 붙이거나 이진 수 앞에 0b를 붙여 표시

 

이진수의 음수 표현

2의 보수 사용(모든 0과 1을 뒤집고, 거기에 1을 더한 값)

 

-> 실제 이진수만 봐서는 음수인지 양수인지 구분 어렵기 때문에 컴퓨터내부에서 플래그붙여 표시됨

십육진법

이진수로는 숫자의 길이가 너무 길어진다는 단점 발견.15를 넘어가는 기점에서 올림. 아래첨자(16)을 붙이거나 0x를 붙여 구분

 

십진수   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14  15  16  17

십육진수0 1 2 3 4 5 6 7 8 9  A  B  C   D   E    F  10  11

 

십육진수를 이진수로 변환하기 

십육진수 한글자를 4비트의 이진수로 간주 

ex) 1A2B(16) = > 1(16) A(16) 2(16) B(16) =>0001(2),1010(2),0010(2),1011(2) =>0001101000101011(2)

이진수를 십육 진수로 변환하기

이진수 숫자를 네개씩 끊고 끊어준 네개의 숫자를 하나의 십육진수로 변환 후 이어붙이면 됨. 

ex)11010101(2)=>1101(2),0101(2) =>D(16),5(16) =>D5(16)

 

*)이진수를 십육진수로 십육진수를 이진수로 변환하기 쉽기때문에 사용

 

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


문자 인코딩

문자를 0과 1로 변환. 컴퓨터가 이해하게

문자 디코딩

0과1을 문자로 변환. 사람이 이해하게

아스키 코드

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

EUC-KR

한글을 2바이트 크기로 인코딩 하는 완성형 인코딩 방식 

 

유니코드

여러 나라의 문자들을 광범위 하게 표현할 수 있는 통일된 문자 집합.UTF-8,UTF-16,UTF-32 는 유니코드 문자의 인코딩 방식

 


📚Chapter03 : 명령어


📘03-1 소스 코드와 명령어


저급언어

컴퓨터가 직접 이해하고 실행 할 수 있는 언어. 명령어로 이루어짐.

 

-기계어

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

 

-어셈블리어

0과 1로 표현된 명령어(기계어)를 읽기 편한 형태로 번역한 언어.

고급언어

 사람을 위한 언어

 

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

컴파일 언어

컴파일러에 의해 소스코드 전체가 저급 언어로 변환되어 실행되는 고급언어.

 

-컴파일

코드 전체가 저급언어로 변환되는 과정
-컴파일러

컴파일을 수행해주는 도구

-목적코드

컴파일러를 통해 저급언어로 변환한 코드

인터프리터 언어

인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급언어 (ex 파이썬)

 

-인터프리터

소스코드를 한 줄씩 저급 언어로 변환해 실행해주는 도구

 

-> 소스코드 전체를 저급 언어로 변환하는 시간을 기다릴 필요 x

 

  컴파일 언어 인터프리터 언어
방식 소스 전체 소스 한 줄씩
오류 소스 코드내 오류 하나라도 있으면 컴파일 불가능 소스 코드 N번째에 문법 오류가 있으면 N-1 번째 까지 실행
속도 컴파일을 통해 나온 목적코드가 저급언어이기때문에 빠름 소스 한줄 한줄 저급언어로 해석하며 실행해야해 느림

 

📘03-2 명령어의 구조


명령어 = 연산코드 + 오퍼랜드

연산코드(필드) 오퍼랜드(필드)

 

연산코드(연산자)

명령어가 수행할 연산

 

유형 4가지

1)데이터전송(MOVE,STORE,LOAD(FETCH),PUSH,POP)

2)산술/논리 연산(ADD,SUBTRACT.MULTIPLY,DIVIDE,…)

3)제어 흐름 변경(JUMP,CONDITIONAL JUMP,HALT,CALL,RETURN)

4)입출력 제어(READ(INPUT),WRITE(OUTPUT), START IO,TEST IO)

 

->명령어의 종류와 생김새는 cpu 마다 다르기때문에 연산 코드의 종류와 생김새 또한 cpu 마다 다름

오퍼랜드(피연산자)

연산에 사용할 데이터, 사용할 데이터가 저장된 위치

 

0-주소 명령어: 오퍼랜드 x

1-주소 명령어: 오퍼랜드1개

2-주소 명령어: 오퍼랜드2개

3-주소 명령어: 오퍼랜드3개

 

-> 연산에 사용할 데이터(숫자,문자) 직접적 명시보다는 저장된 위치, 메모리 주소나 레지스터 이름이 주로 담김 따라서 주소 필드라고 부르기도 함. 

 

주소지정방식

명령어의 길이 때문에 주소를 담는 형식을 사용. 연산에 사용할 데이터 위치를 찾는 방법.

 

즉시 주소 지정 방식 (데이터크기가 작아짐, 빠름)

연산코드 연산에 사용할 데이터

직접 주소 지정 방식

연산코드 유효 주소(->메모리에 데이터)

간접 주소 지정 방식

연산코드 유효 주소의 주소(->메모리에 유효주소->메모리에서 데이터)

레지스터 주소 지정 방식

연산코드 유효주소 (->레이스터안의 데이터로)

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

연산코드 유효주소를 저장한 레지스터(->레지스터안에 유효주소->메모리에 데이터)

 

 


💥기본미션💥


👉🏻p.51 확인문제 3번

3. 다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요.

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

👉🏻p.65 확인문제 3번

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

                                                                                                              1101
                                                                                                       ⬇️
                                                                                                             0010
                                                                                                       ⬇️
                                                                                                             0011

                                                                          1101(2)를 음수로 표현한 값은 0011(2) 입니다.


 

* 보수= 0과 1 뒤집기 +1 


☄️특별미션☄️


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

스택

한 쪽 끝이 막혀있는 통 같은 저장공간. 나중에 저장한 데이터를 가장 먼저빼내는 데이터 관리방식(후입선출)이라 LIFO(리포) 자료 구조라고 부름

 

ex) 1-2-3-4-5 로 저장하면 뺄때는 5-4-3-2-1

 

-push

새로운 데이터 저장하는 명령어 

-pop

데이터 꺼내는 명령어

 

양쪽이 뚫려있는 통 같은 저장공간. 가장먼저 저장된 데이터 부터 빼내는 데이터 관리방식(선입선출) 이라 FIFO (피포) 자료구조라고 부름

 

ex)5-4-3-2-1 로 저장하면 뺄때도 5-4-3-2-1