2-2. 컴퓨터가 이해하는 정보

2025. 4. 1. 21:56·책/이것이 취업을 위한 컴퓨터 과학이다

0과 1을 나타내는 가장 작은 정보의 단위를 비트(bit)라고 한다. 바이트(byte)는 여덟 개의 비트를 묶은 단위다. 이는 프로그램의 관점에서 본 정보 단위. 워드(word)는 CPU가 한 번에 처리할 수 있는 데이터의 크기를 의미한다.

 

데이터 - 0과 1로 숫자 표현하기

CPU는 숫자 1을 넘어가는 시점에 자리올림을 하는 2진법(binary)를 사용해 0과 1만으로 모든 수를 표현한다.

 

컴퓨터 내부에서 2진수로 소수를 나타낼 때 가장 중요한 핵심은 표현하고자 하는 소수와 실제로 저장된 소수 간에 오차가 존재할 수 있다는 것이다.

a = 0.1
b = 0.2
c = 0.3

if a + b == c:
	print("Equal")
else:
	print("Not Equal")

위 코드 결과는 Not Equal이다. 이유는 컴퓨터 내부에서 소수점을 나타내기 위해 대표적으로 부동 소수점(floating point) 표현 방식을 이용하는데, 이 방식의 정밀도에 한계가 있기 때문이다. 부동 소수점은 소수점이 고정되어 있지 않은 소수 표현 방식이다.

오늘날 대부분의 컴퓨터는 2진수의 지수와 가수를 다음과 같은 형식으로 저장한다. 이와 같은 부동 소수점 저장 방식을 IEEE 754라고 한다.

 

주의할 점은 10진수 소수를 2진수로 표현할 때, 10진수 소수와 2진수 소수의 표현이 딱 맞아떨어지지 않을 수 있다는 점이다. $m×10^n$으로 표현 가능한 수 중에 $m×2^n$으로 딱 맞아떨어지지 않는 수가 있을 수 있다. 컴퓨터의 저장공간은 한정적이라 무한히 많은 소수점은 저장할 수 없으므로 일부 소수점을 생략해 저장한다. 그래서 오차가 발생하는 것이다.

 

데이터 - 0과 1로 문자 표현하기

  • 문자 집합(character set) : 컴퓨터가 이해할 수 있는 문자들의 집합
  • 문자 인코딩(character encoding) : 문자 집합에 속한 문자를 컴퓨터가 이해하는 0과 1로 이루어진 문자 코드로 변환하는 과정
  • 문자 디코딩(character decoding) : 0과 1로 표현된 문자를 사람이 이해하는 문자로 변환하는 과정

 

아스키(ASCII, American Standard Code for Information Interchange)

  • 초창기 컴퓨터에서 사용하던 문자 집합 중 하나로, 영어의 알파벳과 아라비아 숫자, 일부 특수 문자를 포함한다.
  • 하나의 아스키 문자를 표현하기 위해서는 8비트(1바이트)를 사용
    • 8비트 중 1비트는 패리티 비트(parity bit) - 오류 검출을 위해 사용되는 비트
    • 실질적으로 문자 표현 위해 사용되는 비트는 7비트로 $2^7$=128개의 문자 표현
  • 아스키 코드
    • 아스키 문자에 대응된 고유한 수(0부터 127)
    • 아스키 코드의 인코딩 방식 : 2진수로 표현함으로써 아스키 문자를 0과 1로 대응
    • 예) ‘A’는 10진수 65로 인코딩된다

 

EUC-KR

  • 아스키 코드는 한글을 표기할 수 없어 등장한 한글 인코딩 방식 중 하나
  • 아스키 문자를 표현할 때는 1바이트, 하나의 한글 글자를 표현할 때는 2바이트 크기의 코드를 부여. 한글 글자 하나는 네 자리 16진수로 나타낼 수 있다
  • 예) ‘한’ : 0xc7d1, ‘글’ : 0xb1db

 

하지만 여전히 모든 한글 조합을 표현할 수 있을 정도로 많은 양이 아니다. 그래서 등장한 것이 유니코드(unicode) 문자 집합.

  • 한글을 포함해 EUC-KR에 비해 훨씬 많은 언어, 특수문자, 화살표, 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합
  • 고유한 값이 부여. 예) ‘한’은 0xD55C, ‘글’은 0xAE00
  • 유니코드는 글자에 부여된 값 자체를 인코딩된 값으로 삼지 않고, 이 값을 다양한 방법으로 인코딩. 가변 길이 인코딩 방식 : UTF-8, UTF-16, UTF-32

 

base64

  • 문자뿐만 아니라, 이진 데이터까지 변환할 수 있는 인코딩 방식
  • 이미지 등 단순 문자 이외의 데이터까지 모두 아스키 문자 형태로 표현 가능
  • 하나의 base64 인코딩 값을 표현하기 위해 64개의 문자가 사용.
  • 64진수 하나를 표현하기 위해서는 $2^6$의 지수인 6비트가 필요. 기본적으로 4개씩(24비트씩) 한 번에 변환

 

명령어

명령어는 수행할 동작과 수행할 대상으로 구성

  • 수행할 대상 : 수행할 동작에 사용될 데이터 자체 or 동작에 사용될 데이터가 저장된 위치

  • 하나의 명령어는 연산 코드와 0개 이상의 오퍼랜드로 구성
    • 연산 코드(opcode) : ‘명령어가 수행할 동작’
    • 오퍼랜드(operand) : ‘동작에 사용될 데이터’ 혹은 ‘(메모리나 레지스터의 주소와 같이) 동작에 사용될 데이터가 저장된 위치’

 

오퍼랜드 필드에는 데이터가 많은 경우 연산 코드에 사용될 데이터가 저장된 위치, 즉 메모리 주소나 레지스터의 이름이 명시된다. 그래서 오퍼랜드 필드를 주소 필드(address field)라고 부른다.

명령어에 사용된 오퍼랜드에 메모리 주소가 명시될 경우, 명령어를 실행하기 위한 추가 메모리 접근이 필요하다.

  • 예) 100번지 값이라는 메모리 주소를 다시 접근해야 된다

 

기계어와 어셈블리어

  • 기계어(machine code) - CPU가 이해할 수 있도록 0과 1로 표현된 정보를 있는 그대로 표현한 언어
  • 어셈블리어(assembly language) - 0과 1로 표현된 기계어를 읽기 편한 형태로 단순 번역한 언어

 

명령어 사이클

CPU가 명령어를 처리하는 과정에서 프로그램 속 각각의 명령어들은 일정한 주기를 반복하며 실행되는데, 이 주기를 명령어 사이클(instruction cycle)이라고 한다.

  • 인출 사이클(fetch cycle) - 메모리에 있는 명령어를 CPU로 가지고 오는 단계
  • 실행 사이클(execution cycle) - CPU로 인출한 명령어를 실행하는 단계

오퍼랜드 필드에 메모리 주소가 명시된 경우 한 번 더 메모리에 접근해야 한다

  • 간접 사이클(indirect cycle) - 명령어를 실행하기 위해 한 번 더 메모리에 접근하는 단계
  • 인터럽트 사이클(interrupt cycle) - 인터럽트를 처리하는 단계

 

 

출처 : 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 책, 

https://youtu.be/t1IIoxTbhig?si=FYKvPxLuGgCFbb_L

'책 > 이것이 취업을 위한 컴퓨터 과학이다' 카테고리의 다른 글

2-4. 메모리  (4) 2025.04.27
2-3. CPU  (0) 2025.04.16
2-1. 컴퓨터 구조의 큰 그림  (1) 2025.03.31
'책/이것이 취업을 위한 컴퓨터 과학이다' 카테고리의 다른 글
  • 2-4. 메모리
  • 2-3. CPU
  • 2-1. 컴퓨터 구조의 큰 그림
개발자 밍
개발자 밍
dev0404 님의 블로그 입니다.
  • 개발자 밍
    Developer
    개발자 밍
  • 전체
    오늘
    어제
    • 분류 전체보기 (88)
      • 강의 (8)
        • UE Climbing System (3)
        • UE Dungeon (1)
        • HCI (4)
      • 책 (18)
        • 객체지향의 사실과 오해 (5)
        • Effective C++ (3)
        • 이득우의 게임 수학 (4)
        • 이것이 취업을 위한 컴퓨터 과학이다 (4)
        • 리뷰 (2)
      • C++ (2)
      • 알고리즘 (2)
      • 자료구조 (1)
      • Unreal (4)
      • 내일배움캠프 (52)
        • TIL (52)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컴퓨터구조
    객체지향
    그래픽스
    게임수학
    c++
    자료구조
    Effective
    알고리즘
    언리얼
    내일배움캠프
    컴퓨터 구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
개발자 밍
2-2. 컴퓨터가 이해하는 정보
상단으로

티스토리툴바