본문 바로가기
Computer Science/컴퓨터 구조 (Computer Architecture)

[혼공컴운] Ch2. 데이터

by hyuga_ 2023. 9. 27.

1. 이진법

컴퓨터는 Binary만 이해 가능. 전기가 들어온 경우 vs 안 들어온 경우

 

이진법으로 음수를 표현하는 방법

  • 2의 보수법: 음수를 표현하는 대표적인 방법 (보수: 보충해 주는 수)
    • 현재의 숫자에서 자릿수가 1단계 올라갈 수 있는 수가 몇인지를 구하면 된다.
    • 어떤 수를 그보다 큰 2^n에서 뺀 값

 

  • 2의 보수 쉽게 구하는 법:
    • 모든 0과 1을 뒤집고 1을 더한 값

 

Q1. 왜 2의 보수가 음수인가요?

 

B가 A의 음수라면, -B 는 -(-A), 즉 A이겠지?

2의 보수로 구한 값의 보수를 또 구하면 제자리로 돌아오기 때문에, 음수를 표현하는 최적의 방법이다.

 

 

 

Q2. 어떠한 이진수를 봤을 때 그게 음수인지 양수인지 어떻게 구별하죠?

예를 들어, -(1011)을 표현하기 위한 0101과 십진수 5를 표현하기 위한 0101은 똑같이 생겼잖아요.

 

CPU 내부에는 이를 구분하기 위해 플래그(flag) 레지스터가 있다. 모든 값이 플래그를 들고 있다고 보면 된다.

플래그 레지스터에 현재 값이 양수인지 음수인지 표기가 되어있기 때문에 헷갈릴 일은 없다.

 

 

2진법으로 문자를 표현하는 방법

  • 문자 집합 (Character set)
    • 컴퓨터가 이해할 수 있는 문자의 모음
    • 문자 집합에 속해있지 않은 문자는 이해할 수 없다

 

  • 인코딩 (Encoding)
    • 코드화하는 과정
    • 문자를 0과 1로 이루어진 문자코드로 변환하는 과정

 

  • 디코딩 (Decoding)
    • 코드를 해석하는 과정
    • 0과 1로 표현된 문자 코드로 문자를 변환하는 과정

 

아스키 코드 (ASCII code)

  • 특징
    • 초창기 문자 집합 중 하나
    • 7비트로 하나의 문자를 표현
      • 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트 (parity bit)

 

  • 장점
    • 인코딩이 간단하다

 

  • 단점
    • 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현 불가
    • 아스키코드는 7비트로 하나의 문자를 표현하기 때문에, 128개보다 많은 문자를 표현할 수 없다
    • 이에, 8비트 확장 아스키 (extended ASCII) 등장. 그러나 여전히 부족

 

한글 인코딩 방식의 특징

  • 한글의 특징
    • 영어는 알파벳을 이어 쓰면 단어가 된다
    • 한글은 초성, 중성, 종성의 조합으로 이루어져 있다
    • 이에 한글을 위한 인코딩 방식이 필요

 

  • 완성형 인코딩 방식 vs 조합형 인코딩 방식
    • 완성형은 모든 문자 조합을 하나하나 정해놓음
    • 조합형은 자음과 모음의 조합을 합침

 

 

 

EUC-KR

  • 대표적인 한글 문자 집합
  • 완성형 인코딩 방식
  • 글자 하나 하나에 2바이트 크기의 코드 부여
    • 2byte = 16bit = 4자리의 16진수로 표현
  • 2300여 개의 한글 문자 표현 가능
    • 그러나, 쀏 뙠 휔 등의 특이한 문자는 표현 불가
  • 또한 EUC를 활용하면 국가마다 문자 집합이 다르기 때문에 다국적 서비스를 만들 때 각 언어별 적용을 해줘야 한다는 번거로움이 있음

 

 

 

유니코드 문자 집합과 utf-8

이들은 현재 문자 표현에 있어서 매우 중요한 위치를 차지한다

 

유니코드

  • 앞서 말한 언어별 문자 집합이 다르다는 문제를 해결하기 위해 등장
  • 통일된 문자 집합
  • 한글, 영어, 화살표와 같은 특수 문자, 이모티콘까지 표현 가능하다

 

UTF (Unicode Transformation Format)

  • 유니코드의 인코딩 방식이다
  • utf-8, utf-16, utf-32 …

 

 

  • 가변 길이 인코딩: 인코딩 결과가 1~4 byte
    • 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다르다

(외울 필요는 없고, 그냥 한번 읽고 이해하자)

 

 

2. 정보 단위

 

  • n비트로 2^n 가지의 정보 표현이 가능하다
  • 프로그램은 수많은 비트로 이루어져 있다
  • 편의성을 위해 비트보다 더 큰 단위를 사용한다. Byte, KB, MB, GB, TB ..

 

편의상 1024가 아니라 1000개씩 묶었다는 점에 유의하자.

밑에 쓰인 것과 같이, 1024개씩 묶으면 kiB, MiB, GiB .. 라고 한다.

 

  • 워드 (word)
    • CPU가 한 번에 처리할 수 있는 정보의 크기 단위
      • 예를 들어 CPU가 한 번에 32bit씩 처리할 수 있다고 하면, 1 워드는 32bit이다.
    • 하프 워드 (Half word): 워드의 절반 크기
    • 풀 워드 (Full word): 워드 크기
    • 더블 워드 (Double word): 워드의 두 배 크기

 

 

  •