본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다.
문자 집합과 인코딩
컴퓨터 어떻게 문자를 이해하는지 알기 위해선 다음 3가지 개념을 알고 있어야 한다.
문자 집합, 인코딩, 디코딩
▶︎ 문자 집합
- 컴퓨터가 이해할 수 있는 문자의 모음
- ex ) 아스키 코드, 유니 코드 등
▶︎ 인코딩
- 코드화 하는 과정
- 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
▶︎ 디코딩
- 코드를 해석하는 과정
- 0과 1로 표현된 문자 코드를 문자로 변환하는 과정
아스키 코드
- 초창기 문자 집합 중 하나
- 알파벳, 아리비아 숫자, 일부 특수 문자 및 제어 문자 표현
- 7비트로 하나의 문자를 표현 => 128개의 문자 표현
- 1비트는 오류 검출을 위해 사용되는 패리티 비트
- But 한국어, 중국어 등 표현 불가
한글 인코딩
한글은 초성, 중성, 종성의 조합이 존재한다. 때문에 한글 인코딩에는 2가지 방식으로 완성형 인코딩과 조합형 인코딩이 존재한다.
▶︎ 완성형 인코딩
- 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 방식
- ex) 강 -> 1110110 10001000 10010101 부여
▶︎ 조합형 인코딩
- 각 초성, 중성, 종성에 고유한 코드를 부여하여 그것들의 조합으로 하나의 글자코드 완성
- ㄱ → 0010
- ㅏ → 0011
- ㅇ→ 0001 0011
- 강 → 0010 0011 0001 0011
EUC-KR
- 대표적인 한글 인코딩 중 하나로 완성형 인코딩 방식이다.
- 글자 하나하나에 2바이트 크기의 코드 부여 → 2¹⁶ 개
- 16bit = 4자리16진수
- 한국어 인코딩이기 때문에, 다국어 지원 프로그램을 위해선 언어별 인코딩 적용이 필요하다
모든 언어, 특수 문자끼리 통일된 문자집합과 인코딩 방식이 필요!
유니 코드와 utf-8
모든 언어, 특수 문자끼리 통일된 문자집합과 인코딩 방식
▶︎ 유니코드
- 글자 하나에 4바이트 크기까지 부여 가능 (32비트, 약 42억자)
- 한국어는 조합형, 완성형 모두 배당되어 있음
더보기
가 → U+AC00
- U+는 16진수를 나타내며, 실제 할당된 코드는 AC00이다.
컴퓨터는 문자를 유니코드 표를 통해 할당된 표 값으로 인코딩 값을 삼지 않는다.
할당된 코드 값을 어떻게 처리하는지에 따라 인코딩 방식이 나뉜다.
▶︎ UTF-8
- 유니코드 인코딩 방식이다.
- UTF(Unicode Tranformation Format) == 유니코드 인코딩 방식
- 가변 길이 인코딩 : 인코딩 결과가 1바이트 ~ 4바이트이다.
- 유니코드 표에 할당된 범위에 따라 크기가 다르다.
첫 코드 포인트 | 마지막 코드 포인트 | 1바이트 | 2바이트 | 3바이트 | 4바이트 |
0000 | 007F | 0XXXXXXXX | |||
0080 | 07FF | 110XXXXX | 10XXXXXX | ||
0800 | FFFF | 1110XXXX | 10XXXXXX | 10XXXXXX | |
10000 | 10FFFF | 11110XXX | 10XXXXXX | 10XXXXXX | 10XXXXXX |
- 유니코드 문자에 부여된 값의 범위가 0부터 007F까지는 1바이트로 표현
- 유니코드 문자에 부여된 값의 범위가 0080부터 07FF까지는 2바이트로 표현
- 유니코드 문자에 부여된 값의 범위가 0800부터 FFFF까지는 3바이트로 표현
- 유니코드 문자에 부여된 값의 범위가 10000부터 10FFFF까지는 4바이트로 표현
- 할당된 코드 값을 빨간 X에 차례대로 넣은 값이 인코딩된 값이다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 #6 - CPU 내부 구성(ALU, 제어 장치) (0) | 2024.01.27 |
---|---|
컴퓨터 구조 #5 - 명령의 구조와 주소 지정 방식 (0) | 2024.01.26 |
컴퓨터 구조 #4 - 저급언어와 고급언어 (1) | 2024.01.26 |
컴퓨터 구조 #2 - 0과 1로 숫자를 표현하는 방법 (2) | 2024.01.24 |
컴퓨터 구조 #1 - 대략적인 컴퓨터 구성(CPU, 메모리, 레지스터) (1) | 2024.01.24 |