[혼공컴운] WIL_#1

Oigu·2024년 1월 7일
0
post-thumbnail

01 시작


✔️ 컴퓨터 구조 이해의 장점

  1. 코드가 제대로 작동하지 않는 등 문제 상황의 해결 실마리를 찾을 수 있다.
  2. 성능, 용량, 비용을 고려해 최적의 컴퓨터 환경을 스스로 판단할 수 있다.s

✔️ 컴퓨터 구조 지식

Computer Structure


✔️ 컴퓨터 핵심 부품

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

컴퓨터핵심부품

메모리

  • 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
  • 메모리에 저장된 값의 위치는 주소로 알 수 있음

cpu

CPU

  • 메모리에 저장된 명령어를 읽어 들이고 해석하고 실행하는 부품
  • 산술논리연산장치(ALU): 계산기
  • 레지스터: 작은 임시 저장 장치
  • 제어장치: 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치
  • CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기 라는 제어 신호를 보냄
  • CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메모리 쓰기 라는 제어 신호를 보냄

보조기억장치

  • 메모리는 전원이 꺼지면 저장된 내용이 날아감. 이를 보조하는 저장 장치
  • 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않음
  • 예) 하드 디스크, SSD, USB메모리, DVD, CD-ROM ...

입출력장치

  • 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
  • 보조기억장치, 입출력장치를 주변장치라 통칭하기도 함

메인보드와 시스템 버스

  • 메인보드 = 마더보드
  • 메인보드: 여러 컴퓨터 부품 연결
  • 시스템 버스: 컴퓨터의 네 가지 핵심 부품이 서로 정보를 주고받는 통로


02 데이터


✔️ 0과 1로 숫자 표현

정보 단위

비트(bit)

  • 0과 1을 나타내는 가장 작은 정보 단위
  • n비트는 2^n가지 정보 표현 가능

바이트(byte)

  • 여덟 개의 비트를 묶은 단위
  • 1byte = 8bit = 2^8 가지 정보 표현 가능
  • 1KB = 1000byte
  • 1MB = 1000KB
  • 1GB = 1000MB
  • 1TB = 1000GB

byte 암기법

아직도 생각나는 초등학생 때 컴퓨터 수업에서 가르쳐 주신 암기법...
까(K) 마(M) 귀(G) 털(T) 빼(P)... 🐦🪶🪶🪶


이진법

  • 우리가 쓰는 숫자는 십진법으로 표현한 십진수
  • 컴퓨터는 0과 1밖에 모르는 바보... 이진수로 알려줘야 함

구별을 위해 이진수는 1000_(2) 또는 0b1000 같이 표현한다.


2의 보수

  • 이진수를 음수로 표현하는 방법
    모든 0과 1을 뒤집기 ➡️ 숫자 1 더하기

11101 를 음수(2의 보수)로 표현
11101 ➡️ 모든 0과 1 뒤집기
00010 ➡️ 1 더하기
00011 ➡️ 11101의 음수 !!

💡 이진수만 보고 음수인지 양수인지 구별을 어떻게 알아?

!!!!!!!!!!!!! 플래그(flag) !!!!!!!!!!!!! 컴퓨터는 플래그로 부호를 표시하고 구분함

💡 그럼 2의 보수로 언제든지 음수로 변환할 수 있겠네?

!!!!!!!!!!!!!!!! 아님 !!!!!!!!!!!!! 양수와 음수 값이 같을 수가 있음
n비트로는 한계가 있음... 흠?


십육진법

  • 0~9, A~F로 정보 표시하고
  • 15를 넘어가는 시점에 자리 올림해 수를 표현

0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...

십육진수는 15₍₁₆₎ 또는 0x15 와 같이 표현

  • 십육진수를 이진수로 표현
    각 글자를 따로 분해 ➡️ 각 수를 이진수로 표현

  • 이진수를 십육진수로 표현
    네 개씩 분해 ➡️ 십육진수로 변환

1A2B 십육진법을 이진법으로

1 A 2 B ➡️ 십육진수 분해
0001 1010 0010 1011 ➡️ 이진수로 변환
0001101000101011 ➡️ 1A2B의 이진수!

이진수를 십육진수로 표현

11010101 ➡️ 네 개씩 분해
1101 0101 ➡️ 각 네 개씩 십육진수 변환
D5 ➡️ 이어 붙이면 짜잔 십육진수 완성~~!


✔️ 0과 1로 문자 표현

문자 집합과 인코딩

  • 문자 집합 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
  • 문자 인코딩 문자를 컴퓨터가 이해할 수 있는 0과 1로 변환하는 과정
  • 문자 디코딩 0과 1로 표현된 문자 코드를 사람이 읽을 수 있는 문자로 변환하는 과정

아스키 코드

  • 아스키 문자에 대응된 고유한 수(0~127)
  • 아스키 코드를 이진수로 표현함으로써 아스키 문자를 0과 1로 표현 가능

아스키 코드 중 자주 쓰는 문자 일부

아스키코드문자설명
33!느낌표
48-570-9숫자 0부터 9까지
65-90A-Z대문자 알파벳
97-122a-z소문자 알파벳
32공백 (띄어쓰기)
46.마침표 (점)
44,쉼표

EUC-KR

  • 한글을 2바이트 크기로 인코딩
  • 완성형 인코딩 완성된 글자에 코드부여
  • 조합형 인코딩 초성코드 + 중성커드 + 종성코드

유니코드

  • 여러 나라의 문자들을 표현할 수 있는 통일된 문자 집합
  • UTF-8, UTF-16, UTF-32


03 소스 코드와 명령어


✔️ 소스 코드와 명령어

  • 고급 언어 사람이 이해하기 쉬운 언어
  • 저급 언어 컴퓨터가 이해하고 실행할 수 있는 언어
  • 소스 코드가 실행되려면 고급 언어 ➡️ 저급 언어(명령어) 변환은 필수
  • 저급 언어

    기계어 0과 1의 명령어 비트로 이루어진 단어
    어셈블리어 기계어를 읽기 편한 상태로 번역한 언어
  • 기계어와 어셈블리어 예시

    0101 0101 ➡️ push rbp

컴파일 언어 & 인터프리터 언어

  • 고급 언어가 저급 언어로 변환되는 방식

  • 컴파일 언어

    • 컴파일 언어 컴파일 방식으로 작동하는 프로그래밍 언어
    • 컴파일 코드 전체가 저급 언어로 변환되는 과정
  • 인터프리터 언어

    • 인터프리터 언어 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
    • 인터프리터 소스 코드를 한 줄씩 저급 언어로 변환하여 실행
    • 컴파일 언어보다 느림



🚶🏻 기본 미션


p.51

  1. 다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요.
프로그램이 실행되려면 반드시 ( **메모리** )에 저장되어 있어야 합니다.

p.65

  1. 1101_(2) 의 음수를 2의 보수 표현법으로 구해 보세요.
**1101** → 모든 0과 1 뒤집기 → **0010** → 1 더하기 → **0011**


🏃🏻 선택 미션


스택과 큐의 개념

p. 100

스택(Stack)

  • LIFO (Last In First Out)
  • PUSH 스택에 새로운 데이터 저장
  • POP 스택에 저장된 데이터 꺼냄

큐(Queue)

  • FIFO (First In First Out)

스택은 나중에 저장한 데이터를 가장 먼저 빼냄(LIFO)
는 선입선출로 가장 먼저 저장된 데이터부터 빼냄(FIFO)

0개의 댓글