[혼공컴운] 1주차_기초부터 차곡차곡(Ch 01 ~ 03)
![[혼공컴운] 1주차_기초부터 차곡차곡(Ch 01 ~ 03)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753020860064%2F1c65ec3e-0b59-4fed-8cc0-3864bb2475b2.png&w=3840&q=75)
01-1) 컴퓨터 구조를 알아야 하는 이유
문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다.
자신이 개발한 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단할 수 있다.(성능, 용량, 비용)
01-2) 컴퓨터 구조의 큰 그림
컴퓨터 구조
컴퓨터가 이해하는 정보(0과 1로 표현된 정보)
데이터 : 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 같은 정적인 정보
명령어 : 데이터를 움직이고 컴퓨터를 작동시키는 정보
컴퓨터의 네 가지 핵심 부품
CPU (중앙처리장치) : 메모리에 저장된 명령어를 읽어 들이고, 해석하고 실행하는 부품
ALU(산술논리연산장치) : 계산기
레지스터 : CPU 내부의 작은 임시 저장 장치
제어장치 : 제어신호라는 전기 신호를 내보내고 명령어 해석하는 장치(메모리 읽기, 쓰기 등)
메모리(주기억장치) : 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
메모리에 저장된 값에 빠르고 효율적으로 접근하기 위하여 주소를 사용한다.
휘발성
보조기억장치 : 메모리를 보조할 저장 장치
SSD, USB, DVD, CD-ROM
비휘발성
입출력장치 : 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 마이크, 스피커, 프린터, 마우스
네 가지 핵심 부품은 모두 메인보드(마더보드)라는 판에 연결되어 있고 연결된 부품들은 버스라는 통로로 서로 정보를 주고 받을 수 있다.
시스템 버스
주소 버스 : 주소를 주고받는다.
데이터 버스 : 명령어와 데이터를 주고 받는다.
제어 버스 : 제어 신호를 주고 받는다.
02-1) 0과 1로 숫자를 표현하는 방법
비트(bit) : 0과 1을 나타내는 가장 작은 정보 단위
n비트는 2ⁿ가지 정보를 표현.
| 1바이트(1byte) | 8비트(8bit) |
| 1킬로바이트(1kB) | 1,000바이트(1,000byte) |
| 1메가바이트(1MB) | 1,000킬로바이트(1,000kB) |
| 1기가바이트(1GB) | 1,000메가바이트(1,000MB) |
| 1테라바이트(1TB) | 1,000기가바이트(1,000GB) |
- 워드(word) : CPU가 한 번에 처리할 수 있는 데이터 크기
이진법 : 0과 1만으로 모든 숫자 표현, 1을 넘어가는 시점에서 올림, 이진수
- 이진수 8 표기 : 1000₍₂₎ , 0b1000
십진법 : 0 ~ 9 숫자만으로 모든 숫자 표현, 9를 넘어가는 시점에 자리 올림, 십진수
십육진법 : 0~9, A~F의 정보로 표현, 15를 넘어가는 시점에 자리 올림
- 십육진수 15 표기 : 15₍₁₆₎ , 0x15
이진수의 음수 표현
2의 보수: 어떤 수를 그보다 큰 2ⁿ에서 뺀 값
- 모든 0과 1을 뒤집고, 거기에 1을 더한 값
컴퓨터 내부에서 어떤 값을 다룰 때 부가 정보가 필요한 경우 플래그를 사용하는데 양수와 음수를 구분할 때도 플래그를 사용한다.
02-2) 0과 1로 문자를 표현하는 방법
문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
문자 인코딩 : 문자 집합을 0과 1로 변환하는 과정
문자 디코딩 : 0과 1로 이루어진 문자코드를 사람이 이해할 수 있는 문자로 변환하는 과정
아스키 코드 : 아스키 문자에 대응된 고유한 수 , 7비트, 총 128개의 문자
- 8비트 중 1비트는 오류 검출을 위해 사용되는 비트
확장 아스키 : 아스키 코드에 1비트 추가, 256개의 문자
EUC-KR : 완성형 인코딩 방식, 한글 단어(2바이트)
완성형 (한글 완성형 인코딩) : 완성된 하나의 글자에 고유한 코드 부여
조합형(한글 조합형 인코딩) : 초성, 중성, 종성에 해당하는 코드를 합해서 하나의 글자 코드
유니코드 : 현대 문자를 표현할 때 가장 많이 사용되는 표준 문자 집합
글자에 부여된 값 자체를 인코딩된 값으로 삼지 않고 다양한 방법으로 인코딩
UTF-8, UTF-16, UTF-32 등의 인코딩 방식
03-1) 소스 코드와 명령어
모든 소스 코드는 컴퓨터 내부에서 명령어로 변환된다.
고급 언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어
저급 언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어
기계어 : 0과 1의 명령어 비트
어셈블리어 : 0과 1로 표현된 기계어를 읽기 편한 형태로 변역한 언어
컴파일 언어 : 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
- 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되고 결과로 목적 코드가 생성.
인터프리터 언어 : 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급언어
- 컴파일 언어보다 느림.
목적 파일 : 목적 코드로 이루어진 파일
실행 파일 : 실행 코드로 이루어진 파일
목적 코드가 실행 파일이 되기 위해서는 링킹이라는 작업을 거쳐야 한다.
03-2) 명령어의 구조
명령어
연산 코드 (작동, 연산) : 명령어가 수행할 연산
데이터 전송
산술 / 논리 연산
제어 흐름 변경
입출력 제어
오퍼랜드 ( 데이터, 위치) = 주소 필드 : 연산에 사용할 데이터, 연산에 사용될 데이터가 저장될 위치
- 연산에 사용할 데이터를 직접 명시하기보다 데이터가 저장된 위치, 메모리 주소나 레지스터 이름
주소 지정 방식 : 연산에 사용할 데이터를 찾는 방법
명령어의 길이 때문에 연산에 사용할 데이터가 저장된 위치(유효 주소)를 사용
즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
직접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
간접 주소 지정 방식 : 유효주소의 주소를 오퍼랜드필드에 명시
레지스터 주소 지정 방식 : 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시
레지스터 간접 주소 지정 방식 : 연산에 사용할 데이터를 메모리에 저장하고 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
기본 숙제
p. 51의 확인 문제 3번
- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.
P. 65의 확인 문제 3번
- 1101₍₂₎을 음수로 표현한 값은 0011₍₂₎ 입니다.
![[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1755441066842%2F4d3a042e-e395-4e14-84c2-725aeabc56ed.png&w=3840&q=75)
![[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1754833767926%2F85ea771d-0416-409a-82d9-bcc62b92cf17.png&w=3840&q=75)
![[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753626546414%2F943e9f66-8c81-4bac-83b6-5797bd83293c.png&w=3840&q=75)
![[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753020566648%2Fc2832934-e4d5-45c1-87c8-a1d5f27b2169.png&w=3840&q=75)