[컴퓨터 구조] 데이터 - 문자표현

2023. 12. 28. 11:32· 공부/System
목차
  1. 문자 집합과 인코딩
  2. 아스키 코드(ASCII)
  3. EUC-KR
  4. 유니코드와 UTF-8
  5. UTF-8 인코딩 방식
  6. 핵심 포인트
  7. Quiz!
반응형

 

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

컴퓨터는 0과 1만 이해할 수 있다고 했는데, 우리가 컴퓨터에서 문서 작업을 하거나 인터넷을 볼때나 문서등을 볼 때 숫자로 입력하고 숫자로 출력되는 것이 아닌 문자로써 사용을 하게 된다

어떻게 컴퓨터가 문자를 이해하고 출력을 하는걸까?

Untitled.png

문자 집합과 인코딩

0과 1로 문자를 표현하는 방법에 대해 알기 위해 알아야 할 용어가 있습니다.

  • 문자 집합(character set) : 컴퓨터가 인식하고 표현할 수 잇는 문자의 모음

컴퓨터는 문자 집합에 속해 있는 문자를 이해할 수 있고, 반대로 문자 집합에 속해 있지 않은 문자는 이해할 수 없다.

  • 문자 인코딩(character encoding) : 문자 집합에 속한 문자를 0과 1로 변환 하는 과정

문자 집합에 속한 문자라고 해서 컴퓨터가 그대로 이해할 수 있는 건 아닙니다. 문자 인코딩으로 인코딩 후 0과 1로 이루어진 결과값이 문자 코드가 됩니다

  • 문자 디코딩(character decoding) : 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정

Untitled.png

아스키 코드(ASCII)

아스키(ASCII : American Standard Code for Infomation Interchange) : 는 초장기 문자 집합 중 하나로, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수 문자를 포함합니다.

아스키 문자들은 각각 7비트로 표현되는데, 7비트로 표현할 수 있는 정보의 가짓수는 2⁷  개로, 총 128개의 문자를 표현할 수 있습니다.

실제 아스키 문자는 8비트(1바이트)를 사용하지만 8비트 중 1비트는 패리티 비트로 오류 검출을 위해 사용되는 비트이기에 실질적으로 7비트만 사용함

Untitled.png

표를 보면 알 수 있듯 아스키 문자들은 0부터 127까지 총 128개의 숫자 중 하나의 고유한 수에 일대일로 대응된다. 아스키 문자에 대응된 고유한 수를 아스키 코드 라고 한다

‘A’는 십진수 65 (이진수 1000001₂)로 인코딩되어 사용된다.

아스키 코드는 영어 밖에 표현할 수가 없기 때문에 영어권 외의 나라들은 자신들의 언어를 0과 1로 표현할 수 있는 고유한 문자 집합과 인코딩 방식을 만듭니다.

EUC-KR

2byte로 한글을 표현한 인코딩 방식

2byte == 16bit : 네 자리 16진수로 표현 가능

Untitled.png

총 2,350개 정도의 한글 단어를 표현할 수 있습니다. 아스키 코드보다 표현할 수 있는 문자가 많아지기는 했지만, EUC-KR로도 모든 한글 조합을 표현할 수 있을 정도로 많은 양이 아니라서 문자에 정의되지 않은 ‘쀍’, ‘믜’ 와 같은 글자는 EUC-KR로 표현할 수 없습니다.

이러한 문제를 조금이나마 해결하기 위해 마이크로소프트의 CP949(Code Page 949) 라는 문자 인코딩도 나왔지만, CP949로도 더욱 다양한 문자를 표현할 수는 있지만 이마저도 한글 전체를 표현하기엔 넉넉하지 않다.

유니코드와 UTF-8

언어별로 인코딩을 나라마다 해야 한다면 다국어를 지원하는 프로그램을 만들 때 각 나라 언어의 인코딩을 모두 알아야 하는 번거로움이 있습니다.

모든 나라 언어의 문자 집합과 인코딩 방식이 통일되어 있는 형태이다.

유니코드(unicode) 문자 집합 : 유니코드는 EUC-KR보다 훨씬 다양한 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합

유니코드는 현대 문자를 표현할 때 가장 많이 사용되는 표준 문자 집합이고 문자 인코딩 세계에서 매우 중요한 역할을 맡고 있다.

유니코드는 각 문자마다 고유한 값이 부여되고 문자에 부여된 값 자체를 인코딩된 값으로 삼지 않고 이 값을 다양한 방법으로 인코딩합니다.

유니코드 문자 인코딩 방식 : UTF-8, UTF-16, UTF-32

UTF-8 인코딩 방식

Untitled.png

UTF-8은 1바이트부터 4바이트까지의 인코딩 결과를 만들어낸다. 인코딩 결과가 가변적입니다

유니코드 문자에 부여된 값의 범위에 따라 바이트가 가변으로 인코딩됩니다

예를 들어 ‘한’에 부여된 값은 D55C16D55C_{16}D55C16​, ‘글’에 부여된 값은 AE0016AE00_{16}AE0016​ 인데 두 글자 모두 0800과 FFFF 사이에 있으므로 ‘한’, ‘글’을 UTF-8로 인코딩하면 3바이트로 표현될 것이다.

표에 ‘X’ 표가 있는 곳에 유니코드 문자에 부여된 고유한 값이 이진수로 변환되어 들어가게 된다

1byte == 8bit(8자리)

0xD55C == 0b1101010101011100

0xD55C = 0b 11101101 10010101 10011100

우선적으로 유니코드의 16진수를 이진수로 변환하고 표에 표시되어 있는 n바이트 부분의 xxxx 부분에 2진수를 8자리 까지 넣어주고, 8자리가 꽉차면 다음 바이트로 이동하여 해당 바이트의 앞에 정해진 수를 놔두고 그 뒤로 이진수로 변환한 남은 숫자들을 넣어주면 된다.

핵심 포인트

  • 문자 집합은 컴퓨터가 인식할 수 있는 문자의 모음으로, 문자 집합에 속한 문자를 인코딩하여 0과 1로 표현할 수 있습니다.
  • 아스키 문자 집합에 0부터 127까지의 수가 할당되어 아스키 코드로 인코딩됩니다.
  • EUC-KR은 한글을 2바이트 크기로 인코딩할 수 있는 완성형 인코딩 방식입니다.
  • 유니코드는 여러 나라의 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합이며, UTF-8, UTF-16, UTF-32는 유니코드 문자의 인코딩 방식입니다.

Quiz!

Untitled.png

답

hongong

Untitled.png

답

2.EUC-KR은 완성형 인코딩입니다.

Untitled.png

답

0xC548, 0xB155 는 3바이트로 구성

0xC548 = 0b1100 0101 0100 1000

0xB155 = 0b1011 0001 0101 0101

Untitled.png

1바이트 : 1110XXXX, 2바이트 : 10XXXXXX, 3바이트 : 10XXXXXX

‘안’ = 11101100 10010101 10001000

‘녕’ = 11101011 10000101 10010101

‘안’ + ‘녕’ = 1110 1100 1001 0101 1000 1000 1110 1011 1000 0101 1001 0101

답 : 11101100100101011000100011101011100001011001010121110 1100 1001 0101 1000 1000 1110 1011 1000 0101 1001 0101_21110110010010101100010001110101110000101100101012​

반응형
  1. 문자 집합과 인코딩
  2. 아스키 코드(ASCII)
  3. EUC-KR
  4. 유니코드와 UTF-8
  5. UTF-8 인코딩 방식
  6. 핵심 포인트
  7. Quiz!
'공부/System' 카테고리의 다른 글
  • [컴퓨터 구조] 명령어
  • [컴퓨터 구조] 컴퓨터 구조 시작
  • [컴퓨터 구조] 데이터 - 숫자표현
Future0_
Future0_
rm -rf /
Future0_
Luna Developer Blog
Future0_
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프로그래밍 (4)
      • 알고리즘 (4)
    • 보안 (14)
      • Dreamhack (4)
      • Hackthebox (1)
      • Webhacking (9)
    • 프로젝트 (4)
    • 공부 (80)
      • Database (2)
      • Python (11)
      • System (4)
      • Java (13)
      • JSP (13)
      • Spring (11)
      • Kotlin (16)
      • 자료구조 (10)
      • 기계학습 (0)
    • Docker (4)
    • Github (2)
    • Tip (1)
    • 잡담 (2)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • Database
  • android studio 삭제
  • 디버깅키해시
  • dreamhack
  • 프로그래밍
  • 자바빈즈
  • 자료구조
  • 보안
  • 컴퓨터
  • 키 해시
  • shared preference
  • Android Studio
  • spring
  • 알고리즘
  • Computer science
  • docker
  • native app
  • SpringBoot
  • cs
  • jsp
  • 상속
  • webhacking
  • 코틀린기본문법
  • api 통신
  • Java
  • ViewModel
  • Kotlin
  • 1.9.22
  • React
  • Python

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
Future0_
[컴퓨터 구조] 데이터 - 문자표현
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.