개발/CS

[혼공컴운] 1주차_컴퓨터 구조 시작하기, 데이터, 명령어

soldev 2025. 1. 9. 16:33

CH01. 컴퓨터 구조 시작하기

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

  • 컴퓨터를 분석의 대상으로 바라볼 수 있게 되어 문제 해결 능력을 키울 수 있다.
  • 성능, 용량, 비용을 고려해서 개발할 수 있게 된다.

컴퓨터 구조의 큰 그림

  • 컴퓨터는 0과 1로된 데이터와 명령어를 사용해서 동작한다.
  • 컴퓨터는 네 가지 핵심 부품으로 구성된다.
    • CPU : ALU, register, CU를 사용해서 메모리에 저장된 명령어를 해석하고 실행
    • RAM : 실행 중인 프로그램의 명령어와 데이터를 저장
    • 보조기억장치 : 전원이 꺼져도 프로그램의 데이터를 저장
    • 입출력장치 : 모니터, 마우스, 키보드 등
  • 이 부품들은 메인보드에서 시스템 버스를 통해 연결되어 상호작용한다.

CH02. 데이터

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

  • 컴퓨터는 0과 1로된 데이터와 명령어만 이해할 수 있기 떄문에 0과 1을 사용하는 이진법으로 숫자를 표현함
  • 이진법으로 표현하면 너무 길어지기 때문에 상호 변환하기 쉬운 십육진법으로 표현하기도 함

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

  • 컴퓨터가 표현할 수 있는 문자 집합을 정의하고 각 문자에 이진법 코드를 부여
  • 컴퓨터는 문자 집합에 이진법 코드에 대응되는 문자가 있을 때 이해하고 표현할 수 있음
  • ASCII : 7비트를 사용해서 알파벳과 몇 가지 특수문자를 포함한 128가지 문자 표현
  • EUC-KR : 2바이트를 사용해서 완성된 글자마다 코드를 부여하여 2350개 정도 문자 표현
  • 유니코드 : 대부분의 언어, 특수문자, 이모티콘 등을 모두 포함하는 통일된 문자 집합
  • UTF-8 : 유니코드 문자를 인코딩하는 방식 중 하나로, ASCII나 EUC-KR과 달리 문자에 부여된 코드를 한번 더 인코딩함

CH03. 명령어

소스 코드와 명령어

  • 고급 언어 : 사람이 이해할 수 있는 언어 (e.g. C, C++, Java, Python)
  • 저급 언어 : 컴퓨터가 이해할 수 있는 언어 (e.g. 기계어(0과 1로 이루어진 언어), 어셈블리어)
  • 컴파일 언어 : 소스 코드 전체를 저급 언어로 변환한 뒤 실행하는 방식으로 동작하는 언어
    • 목적 코드 : 컴파일러를 통해 저급 언어로 변환된 코드
  • 인터프리터 언어 : 소스 코드를 한 줄씩 저급 언어로 변환해서 실행하는 방식으로 동작하는 언어
  • 컴파일 동작 방식 (C 언어 예시)
    1. 전처리 : 외부 라이브러리 코드를 가져오거나 매크로 코드를 변환하며 컴파일을 준비함
    2. 컴파일 : 소스 코드를 어셈블리 코드로 변환
    3. 어셈블 : 어셈블리 코드를 목적 코드로 변환
    4. 링킹 : 모든 목적 코드들을 하나의 실행 파일로 변환

명령어의 구조

  • 연산 코드 필드 : 명령어가 수행하려는 연산의 종류 명시
  • 오퍼랜드 필드 : 데이터 또는 데이터가 저장된 주소(유효 주소) 명시
  • 명령어는 오퍼랜드 필드에서 가져온 데이터로 연산 코드 필드에 명시된 연산을 수행한다.
  • 오퍼랜드 필드는 연산 코드 필드의 크기 만큼 표현 가능한 데이터 가짓수가 적기 때문에, 주로 데이터를 직접 명시하지 않고 유효 주소를 명시한다.
  • 주소 지정 방식 : 오퍼랜드 필드에 저장할 유효 주소를 찾는 방법
    1. 즉시 주소 지정 방식 : 데이터를 직접 명시
    2. 직접 주소 지정 방식 : 데이터를 메모리에 저장한 뒤 그 유효 주소를 명시
    3. 간접 주소 지정 방식 : 메모리에 저장된 유효 주소의 주소를 명시
    4. 레지스터 주소 지정 방식 : 데이터를 레지스터에 저장한 뒤 그 유효 주소를 명시
    5. 레지스터 간접 주소 지정 방식 : 데이터를 메모리에 저장한 뒤 그 유효 주소를 레지스터에 저장하고 레지스터 주소를 명시

숙제

p.51 확인 문제 3번

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

p.65 확인 문제 3번

1011(2)의 음수를 2의 보수 표현법으로 구하기

1101 -> 0010 -> 0011

스택과 큐

  • 스택 : LIFO 방식으로 동작하는 자료구조
  • 큐 : FIFO 방식으로 동작하는 자료구조