나만의 학습 기록

최종 목적은 기술 블로그💩

CS

컴퓨터의 구조 - 컴퓨터가 이해하는 정보

밈밍민믹 2026. 3. 12. 17:06

CS 게시판에 대해서, 기술 면접을 보기 위해서는 CS에 대해 대충 아는 것이 아닌 설명할 수 있는 수준까지 아는 것이 중요하다는 것을 깨닫게 되었습니다.

이를 위해 대충이 아닌 '정확하게 A-Z까지 해보자!'라는 마음으로 기초부터 심화로 넘어갈 예정으로 작성하는 게시물이며, 기술 면접 준비를 위한 게시물입니다.

컴퓨터가 이해하는 정보 → 데이터, 명령어

데이터

  • 숫자, 문자, 이미지와 같은 정적인 정보
  • 컴퓨터와 주고 받는 정보컴퓨터에 저장된 정보 그 자체(데이터로 통칭)
  • 0과 1로만으로 다양한 숫자와 문자 데이터로 표현

명령어

  • 데이터를 활용하는 정보
  • CPU는 명령어를 이해하고 실행하는 주체
  • 명령어 사이클 : CPU가 명령어를 처리하는 순서

 

CPU는 기본적으로 0과 1만을 이해할 수 있기에 2진수의 N비트를 2^N개의 정보를 표현할 수 있다.

하지만 비트는 너무 작은 단위이기에  킬로바이트(kB), 메가바이트(MB), 기가바이트(GB) 등의 단위를 사용한다.

 

위와 같이 구분이 가능하며, 1 바이트는 8비트(2^8 = 256개의 정보)를 얘기한다.

※이전 단위 1024개를 묶은 단위의 경우 KiB, MiB, GiB, TiB라고 함.

 

워드(Word)

CPU가 처리할 수 있는 데이터 크기

만약, CPU가 16비트를 처리할 경우 1워드 = 16비트, 32비트를 처리할 경우  1워드 = 32비트라고 한다.

  • 현재는 대부분의 워드 크기는 32비트, 64비트이다.

 


2진수에서 소수를 나타내는 방식

예시를 들어보자. 아래와 같은 파이썬 코드가 존재한다. 해당 결과는 Not Equal이다. 왜인지 알아보자.

a = 0.1
b = 0.2
c = 0.3

if a + b == c:
	print("Equal")
else:
	print("Not Equal")
    
//출력 결과는 Not Equal이다.

 

이유를 알아보기 앞서 결과를 얘기하자면 부동소수점의 표현 방식으로 인해 오차가 발생한 문제이다. 즉, 정밀도의 한계가 존재하여 발생한 문제이다.

 

예를 들어, 123.123을 m*10^n으로 표현하기 위해서는 1.23123 * 10^n, 1231.23 * 10^n 이 외에도 다양하게 표현이 가능하다.

 

부동소수점 저장방식 IEEE754에 대해서 자세히 알아보자.

부동소수점을 저장하는 방법(IEEE754)에 의해 가수의 정수부에는 1로 통일된 정규화한 수가 들어가고, 소수를2^지수*1.xxx 형태의 .xxx에 해당되는 소수부분만 저장된다. 

1101011.1010101의 경우 1.1010111010101*2^6으로 저장되어 가수는 1010111010101가 저장될 것이다. 

지수의 경우 바이어스가 이용되는데

지수 표현을 위해 8비트를 사용할 경우 127, 11비트를 사용할 경우 1,023입니다. 따라서 1.1010111010101*2^6이 32비트로 저장될 대는 127+6인 133(10000101) 으로 저장이 됩니다.

즉, 저장 공간은 한정적인데 딱 맞아떨어지지 않는 소수를 표현할 때 일부 소수점을 생략하여 저장하기 때문에 부동소수점에 의해 발생한 오차이다.

 


0과 1로 문자 표현하기

  • 문자 집합 : 컴퓨터가 이해할 수 있는 문자들의 집합(ex. 아스키코드)
  • 문자 인코딩 : 문자 집합에 속한 문자를 컴퓨터가 이해하는 0 또는 1로 변환하는 과정
  • 문자 디코딩 : 사람이 이해하는 문자로 변환하는 과정

 

아스키(ASCII)

  • 8비트 중 1비트는 패리티 비트를 사용하기에 실질적인 문자표현은 7비트이다.
  • 2^7 = 128개의 문자 표현이 가능하다.

 

EUC-KR

  • KS X 1001, KS X 1003이라는 문자 집합 기반의 인코딩 방식(한국어)
  • 하나의 한 글자를 표현하기 위해 2바이트(16비트)가 이용된다.
  • 즉, 네자릿수의 16진수로 표현된다.

 

유니코드

  • 많은 언어, 특수 문자 등 통일된 문자 집합
  • UTF-8, UTF-16, UTF-32 등이 존재하며 유니코드 문자에 부여된 값을 인코딩하는 방식이다.
  • UTF-8, UTF-16은 가변 길이 인코딩이기에 결과가 일정하지 않지만, UTF-32는 고정 길이 인코딩이기에 일정하다.

 

명령어

  • 데이터 자체에 대한 명령어, 데이터가 저장된 위치에 대한 명령어가 될 수 있다.
  • 연산 코드 : 명령어를 수행할 동작
  • 오퍼랜드 : '동작에 사용될 데이터' 또는 '동작에 사용될 데이터가 저장된 위치'
  • 명령어 = 연산코드 + 0개 이상의 오퍼랜드

 

기계어

  • CPU가 이해할 수 있는 언어
  • 0과 1로 이루어진 언어

 

어셈블리어

  • 기계어를 읽기 편하게 번역한 언어
  • mov, push, pop, ret 등이 존재한다.

 

명령어 사이클

  • CPU가 명령어를 처리하는 과정에서 프로그램 속 각각의 명령어들의 일정한 주기를 반복하여 실행된다.
  • 인출 사이클 : 메모리에 있는 명령어를 CPU로 가지고 오는 단계
  • 실행 사이클 : 명령어 사이클의 두 번째 과정인 CPU로 가져온 명령어를 실행하는 과정
  • 간접 사이클 : 명령어를 실행하기 위해 한번 더 메모리에 접근하는 단계

 

이상으로 컴퓨터가 이해하는 정보에 대해 간단하게 알아보았습니다. 저도 다시 학습하니 기존에 알고 있던 것 중 잘못 알고 있던 것도 존재하여 다시 학습하는 시간이 되었네요. 다음에는 컴퓨터의 부품에 대해 차례대로 가져오도록 하겠습니다.

 

 

출처


https://product.kyobobook.co.kr/detail/S000214014967

 

이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 | 강민철 - 교보문고

이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 | 기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!프로그램의 실행 원리를 이해하지 못한 채 ‘일단 작동만 하도록 만드는 것’과 정

product.kyobobook.co.kr

 

'CS' 카테고리의 다른 글

컴퓨터의 구조 - 메모리  (0) 2026.03.17
컴퓨터의 구조 - CPU에 대해 2  (1) 2026.03.17
컴퓨터의 구조 - CPU에 대해 1  (0) 2026.03.13