컴퓨터는 0과 1로 모든 정보를 표현하고 0과 1로 표현된 정보만을 이해할 수 있다.
비트(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)도 자주 사용합니다.
십진수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ... |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
십육진수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 | 11 | ... |
아스키(ASCII)는 초창기 문자 집합 중 하나로, 영어 알파벳, 아라비아 숫자, 그리고 일부 특수 문자를 포함하여 7bit로 표현되는 문자집합입니다. 7bit로 표현할수 있는 정보의 가짓수는 2^7개(총 128개)의 문자를 표현할 수 있습니다.
실제로 아스키 문자를 나타내기 위해서는 8bit(1byte)를 사용합니다. 7bit는 문자 표현을 위해 사용되고 1bit는 패리티비트(parity bit)로 오류 검출을 위해 사용하는 비트 입니다.
아스키 코드는 매우 간단하게 인코딩 된다는 장점이 있었지만 한글을 표현할 수 없었습니다. 그래서 등장한 한글 인코딩 방식이 EUC-KR입니다.
한글은 알파벳을 쭉 이어쓰면 단어가 되는 영어와는 다르게 초성, 중성, 종성의 조합으로 이루어져 있습니다. 그래서 한글 인코딩에는 2가지 방식으로 오나성형(한글 완성형 인코딩)과 조합형(한글 조합형 인코딩)이 존재합니다.
EUC-KR은 KS X 1001, KS X 1003이라는 문자 집합을 기반으로 하는 완성형 한글 인코딩 방식입니다. 초성, 중성, 종성이 모두 결합된 한글 단어에 2byte 크기의 코드를 부여합니다. EUC-KR로 인코딩 된 한글 문자는 2byte로 16비트로 4자리 십육진수로 표현할 수 있습니다.
EUC-KR 인코딩 방식으로 총 2,350개 정도의 한글 단어를 표현할 수 있었지만 모든 한글을 표현할수는 없다는 한계가 있습니다. 또 언어별로 인코딩을 나라마다 한다면 다국어 지원하는데 번거로움이 있습니다.
그래서 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합인 유니코드(Unicode)가 등장합니다.
유니코드는 기존 ASCII나 EUC-KR와 다르게 글자에 부여된 값 자체를 인코딩된 값으로 삼지 않고 이 값을 다양한 방법으로 인코딩합니다. 이런 인코딩 방법에는 크게 UTF-8, UTF-16, UTF-32 등이 있습니다.
유니코드는 글자와 코드가 1:1매핑되어 있는 ‘코드표'입니다.
UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용합니다. 유니코드 문자에 부여된 값의 범위에 따라 UFT-8로 인코딩한 결과가 몇 바이트가 될지 결정됩니다.