컴퓨터는 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로 인코딩한 결과가 몇 바이트가 될지 결정됩니다.
'컴퓨터구조' 카테고리의 다른 글
컴퓨터구조 - ALU, 제어장치, 레지스터 (0) | 2023.02.23 |
---|---|
컴퓨터 구조 - 명령어의 구조 (0) | 2023.02.22 |
컴퓨터구조 - 저급언어 vs 고급언어, 컴파일러언어 vs 인터프리터 언어 (0) | 2023.02.21 |
컴퓨터 구조 - 컴퓨터를 구성하는 요소 (0) | 2023.02.19 |
컴퓨터 구조 - 컴퓨터 구조(Computer Architecture)란? (0) | 2023.02.18 |