[Computer information] 유니코드란 무엇인가?

in #kr-dev6 years ago

안녕하세요!! @wonnieyoon입니다.
오늘은 "유니코드"에 대해 설명해볼까 합니다.

유니코드를 설명하기 앞서 비트(bit)에 대해 설명하겠습니다.
컴퓨터는 0,1 두가지 값으로 통신하게 되는데
0과 1은 전기의 Off,On을 나타냅니다.

A에서 B로 데이터 101011을 보낸다고 했을때
B는 10101을 받습니다. 왜냐하면 1 다음에 오는 1이 먼저온 1과 다르지 않기 때문에 구분해내지 못합니다. 그래서 보레이트라는 것을 걸어야 합니다.
전송속도가 초당 1bit 이고 보레이트가 1초마다 검사를 한다면
101011을 잘 받을수 있습니다.

101011을 십진수로 변환하면 43이 되고 이것을 특정 알파벳으로 정해놓게 된다면
101011만 보내게 되더라도 B는 K라는것을 알수있습니다. 이것을 매핑한다고 표현합니다.

컴퓨터는 미국에서 개발되었기 때문에 기본적으로 모든 알파벳은 매핑이 되었습니다.
알바펫,기타 특수문자등을 합치면 7bit로 표현할수 있게 됩니다.
그런데 오류를 검사하기 위해 '패리티비트' 1bit를 추가하여 8비트를 사용합니다.
이것이 바로 아스키코드입니다.

영어의 경우 알바펫 하나가 문자이지만
한글의 경우 자음과 모음이 모여 하나의 문자를 만들어 냅니다.
그렇기 때문에 기존의 아스키코드로는 다른 나라의 문자를 표현하기에 부족했습니다.
그러다 1960년대 유니코드가 나왔습니다.
유니코드는 알파벳 하나를 2Byte(=16bit)로 표현하기 때문에 표현할수 있는 경우의 수가 2의 16승개로 늘어났습니다.
하지만 한자의 경우 10만개 이상이므로 표현이 불가능했고 이외에도 표현 못하는 언어들을 보완하기 위해 유니코드 2.0 , 3.0이 나오게 되었습니다.
이로 모든 언어를 표현할수 있게 되었는데 이것을 '완성형 문자'라고 합니다.
'완성형 문자'는 문자하나하나가 매핑 되었다는 특징을 가지고 있는데
새롭게 생성되는 문자는 계속해서 업데이트를 해줘야 했고 업데이트를 하지 않으면 새롭게 생성된 문자는 사용할수가 없었기 때문에 '조합형 문자'라는 기술이 필요해졌습니다.

조합형을 예를 들어보자면 한글의 경우 초성,중성,종성을 각 1Byte로 매핑해놓고
3개의 조합으로 한글을 표현하게 되는데 이때 한글은 3Byte로 계산을 하고
이렇게 조합을 하는 방식이 UTF-8입니다.

UTF-8에서 영어는 1Byte,한글은 3Byte 로 표현되는데 즉,언어에 따라 가변적이라는 것입니다. 예를들면 "나는 animal"을 utf-8로 저장하게 된다면 한글은 2개 6Byte , 영어는 6개 6Byte, 공백 1Byte 를 합쳐서 13Byte로 저장되게 됩니다.

하지만 많은 언어를 표현할수 있지만 언어종류에 따라 바이트수가 다르기 때문에 입력에 따라 연산이 반드시 진행 되어야 한다는 단점이 존재합니다.

Sort:  

아스키코드군요
학교에서 정보배울때 배웠던 기억이!

좋은글 잘 읽고 가요~^^!!

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63316.73
ETH 3077.03
USDT 1.00
SBD 3.87