0과 1로 문자를 표현하는 방법

mmmhmm·2024년 2월 7일
0

문자 집합과 인코딩

컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 문자 집합(character set) 이라고 한다. 컴퓨터는 문자 집합에 속해 있는 문자를 이해할 수 있고, 반대로 문자 집합에 속해 있지 않은 문자는 이해할 수 없다. 예를 들어 문자 집합이 {a, b, c, d, e}인 경우 컴퓨터는 이 다섯 개의 문자는 이해할 수 있고, f나 g 같은 문자는 이해하지 못한다.

문자 집합에 속한 문자라고 해서 컴퓨터가 그대로 이해할 수 있는 건 아니다. 문자를 0과 1로 변환해야 비로소 컴퓨터가 이해할 수 있다. 이 변환 과정을 문자 인코딩(character encoding) 이라 하고 인코딩 후 0과 1로 이루어진 결과값이 문자 코드가 된다. 같은 문자 집합에 대해서도 다양한 인코딩 방법이 있을 수 있다.

인코딩의 반대과정, 즉 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정은 문자 디코딩(character decoding) 이라고 한다.

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

아스키 코드

아스키(ASCII)는 초창기 문자 집합 중 하나로, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수 문자를 포함한다. 아스키 문자 집합에 속한 문자(이하 아스키 문자)들은 각각 7비트로 표현되는데, 7비트로 표현할 수 있는 정보의 가짓수는 2^7개로, 총 128개의 문자를 표현할 수 있다.

note. 실제로는 하나의 아스키 문자를 나타내기 위해 8비트(1바이트)를 사용한다. 하지만 8비트 중 1비트는 패리티 비트(parity bit)라고 불리는, 오류 검출을 위해 사용되는 비트이기 때문에 실질적으로 문자 표현을 위해 사용되는 비트는 7비트이다.

아스키 코드표
나무위키

아스키 문자들은 0부터 127까지 총 128개의 숫자 중 하나의 고유한 수에 일대일로 대응됩니다. 아스키 문자에 대응된 고유한 수를 아스키 코드라고 한다. 아스키 코드를 이진수로 표현함으로써 아스키 문자를 0과 1로 표현할 수 있다. 아스키 문자는 이렇게 아스키 코드로 인코딩된다.
※ 아스키 문자 집합에 0부터 127까지의 수가 할당되어 아스키 코드로 인코딩된다.

예를 들어 'A'는 십진수 65(이진수 1000001(2))로 인코딩되고, 'a'는 십진수 97(이진수 1100001(2))로, 특수 문자 !는 십진수 33(이진수 100001(2))으로 인코딩된다.

이렇듯 아스키 코드는 매우 간단하게 인코딩된다는 장점이 있지만, 단점도 있다. 한글을 표현할 수 없다. 한글뿐만 아니라 아스키 문자 집합 외의 문자, 특수문자도 표현할 수 없다. 근본적으로 아스키 문자 집합에 속한 문자들은 7비트로 표현하기에 128개보다 많은 문자를 표현하지 못하기 때문이다. 훗날 더 다양한 문자 표현을 위해 아스키 코드에 1비트를 추가한 8비트의 확장 아스키 가 등장하기도 했지만, 그럼에도 표현 가능한 문자의 수는 256개여서 턱없이 부족하다.

그래서 한국을 포함한 영어권 외의 나라들은 자신들의 언어를 0과 1로 표현 할 수 있는 고유한 문자 집합과 인코딩 방식이 필요하다고 생각했습니다. 이런 이유로 등장한 한글 인코딩 방식이 바로 EUC-KR입니다.

EUC-KR

한글 인코딩을 이해하려면 우선 한글의 특수성을 알아야 한다. 알파벳을 쭉 이어 쓰면 단어가 되는 영어와는 달리, 한글은 각 음절 하나하나가 초성, 중성, 종성의 조합으로 이루어져 있다. 그래서 한글 인코딩에는 두 가지 방식, 완성형 (한글 완성형 인코딩)과 조합형(한글 조합형 인코딩)이 존재 한다.
완성형 인코딩 방식은 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식이다. 예를 들어 '가'는 1, '나'는 2, '다'는 3, 이런 식으로 인코딩하는 방식이다

반면 조합협 인코딩 방식은 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비트열을 할당하여 그것들의 조합으로 하나의 글자 코드를 완성하는 인코딩 방식이다. 다시 말해 초성, 중성, 종성에 해당하는 코드를 합하여 글자 코드를 만드는 인코딩 방식이다.

EUC-KR은 KS X 1001, KS X 1003이라는 문자 집합을 기반으로 하는 대표적인 완성형 인코딩 방식입니다. 즉 ECU-KR 인코딩은 초성, 중성, 종성이 모두 결합된 한글 단어에 2바이트 크기의 코드를 부여한다.

유니코드와 UTF-8

모든 나라 언어의 문자 집합과 인코딩 방식이 통일되어 있다면, 다시 말해 모든 언어를 아우르는 문자 집합과 통일된 표준 인코딩 방식이 있다면 언어별로 인코딩하는 수고로움을 덜 수 있다. 그래서 등장한 것이 유니코드 문자 집합이다. 유니코드는 대부분의 나라의 문자, 특수문자, 화살표나 이모티콘까지도 코드로 표현할 수 있는 통일된 문자 집합이다.

profile
어라? 금지

0개의 댓글