컴퓨터구조

컴퓨터구조 - 데이터를 표현하는 방법

이모냥냥 2023. 2. 20. 21:35
반응형

컴퓨터는 0과 1로 모든 정보를 표현하고 0과 1로 표현된 정보만을 이해할 수 있다.

정보 단위, 비트(bit)

비트(bit)는 0과 1을 나타내는 가장 작은 정보 단위입니다.
1bit는 0또는 1, 두가지 정보를 표현할 수 있습니다. n비트는 2^n가지 정보를 표현 할 수 있습니다.

단위크기
1비트(1bit) 1비트(1bit)
1바이트(1byte) 8비트(8bit)
1킬로바이트(1kB) 1,000바이트(1,000byte)
1메가바이트(1MB) 1,000킬로바이트(1,000kB)
1기가바이트(1GB) 1,000메가바이트(1,000MB)
1테라바이트(1TB) 1,000테라바이트(1,000GB)

CPU가 한번에 처리할 수 있는 데이터 크기 워드(Word)
워드 크기는 CPU마다 다르지만 대부분 32비트 또는 64비트입니다.


숫자 데이터를 표현하는 방법 : 이진법과 십육진법

컴퓨터는 0과 1밖에 모르기때문에 수학에서는 0과 1만으로 모든 숫자를 표현하는 방법을 이진법(binary)을 사용합니다.

일상적으로 사용하는 숫자를 표현하는 방법은 십진법(decimal)입니다. 숫자가 9를 넘어가는 시점에서 자리 올림을 하여 0부터 9까지, 열 개의 숫자만으로 모든 수를 표현하는 방법입니다.

하지만 이진법으로 모든 숫자를 표현하다보니 숫자의 길이가 너무 길어진다는 단점이 있다. 그래서 15를 넘어가는 시점에서 자리 올림을 하는 십육진법(hexadecima)도 자주 사용합니다.

십진수01234567891011121314151617...
십육진수 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...

문자를 표현하는 방법: 문자집합, 인코딩, 디코딩

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

ASCII 코드

아스키(ASCII)는 초창기 문자 집합 중 하나로, 영어 알파벳, 아라비아 숫자, 그리고 일부 특수 문자를 포함하여 7bit로 표현되는 문자집합입니다. 7bit로 표현할수 있는 정보의 가짓수는 2^7개(총 128개)의 문자를 표현할 수 있습니다.

실제로 아스키 문자를 나타내기 위해서는 8bit(1byte)를 사용합니다. 7bit는 문자 표현을 위해 사용되고 1bit는 패리티비트(parity bit)로 오류 검출을 위해 사용하는 비트 입니다.

EUC-KR

아스키 코드는 매우 간단하게 인코딩 된다는 장점이 있었지만 한글을 표현할 수 없었습니다. 그래서 등장한 한글 인코딩 방식이 EUC-KR입니다.
한글은 알파벳을 쭉 이어쓰면 단어가 되는 영어와는 다르게 초성, 중성, 종성의 조합으로 이루어져 있습니다. 그래서 한글 인코딩에는 2가지 방식으로 오나성형(한글 완성형 인코딩)과 조합형(한글 조합형 인코딩)이 존재합니다.

  • 완성형 인코딩 방식 : 초성,중성,종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식입니다.
  • 조합형 인코딩 방식 : 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비트열을 할당하여 그것들의 조합으로 하나의 글자코드를 완성하는 인코딩 방식입니다.

EUC-KR은 KS X 1001, KS X 1003이라는 문자 집합을 기반으로 하는 완성형 한글 인코딩 방식입니다. 초성, 중성, 종성이 모두 결합된 한글 단어에 2byte 크기의 코드를 부여합니다. EUC-KR로 인코딩 된 한글 문자는 2byte로 16비트로 4자리 십육진수로 표현할 수 있습니다.

유니코드와 UTF-8

EUC-KR 인코딩 방식으로 총 2,350개 정도의 한글 단어를 표현할 수 있었지만 모든 한글을 표현할수는 없다는 한계가 있습니다. 또 언어별로 인코딩을 나라마다 한다면 다국어 지원하는데 번거로움이 있습니다.
그래서 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합인 유니코드(Unicode)가 등장합니다.

유니코드는 기존 ASCII나 EUC-KR와 다르게 글자에 부여된 값 자체를 인코딩된 값으로 삼지 않고 이 값을 다양한 방법으로 인코딩합니다. 이런 인코딩 방법에는 크게 UTF-8, UTF-16, UTF-32 등이 있습니다.

유니코드는 글자와 코드가 1:1매핑되어 있는 ‘코드표'입니다.

UTF-8

UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용합니다. 유니코드 문자에 부여된 값의 범위에 따라 UFT-8로 인코딩한 결과가 몇 바이트가 될지 결정됩니다.

 
반응형