아스키코드, 유니코드의 등장 (+ 패리티 비트)

YS_Study.log·2022년 3월 22일
0

문자대응표가 만들어진 이유

전에 설명했던 부분을 회상하며, 컴퓨터는 0 또는 1만 이해할 수 있는데, 우리가 입력하는 문자를 이해할 수 없어서 우리가 입력하는 문자,기호 등을 컴퓨터가 이해할 수 있도록 문자 대응표인 아스키코드와 유니코드를 만든 것이다.

예를 들어, 아스키코드라는 대응표를 예를 들어 문자 a는 1100001로 컴퓨터가 이해하도록 미리 지정해두고, 코드 번호로 64번을 지정해줬기때문에 우리가 a 를 입력하면 컴퓨터가 a를 출력할 수 있는 것이다.

아스키코드 ASCII

미국정보교환표준부호(American Standard Code for Information Interchange) 줄여서 ASCII는 영문 알파벳사용하는 대표적인 문자 인코딩이다. 아스키는 컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있다. 문자가 1 바이트, 즉 8 비트 (각 비트는 0 또는 1)로 인코딩되었습니다. 따라서 하나의 테이블 (동일한 인코딩 또는 집합)은 256 문자 만 포함 할 수 있습니다. 이것은 하나의 언어조차도 충분하지 않을 수 있습니

하나의 문자를 인코딩할때 1바이트(8비트)용량을 사용하는 데, 아스키코드는 7비트 인코딩으로, 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 총128개로 이루어진다.

왜 8비트인데 7비트 인코딩을 하는 것인가?

제어문자, 패리티 비트(Parity Bit)

문자를 표현하는 것은 7비트이며, 1비트는 바로 출력되지않는 제어문자이기 때문인데, 이 제어문자가 패리티 비트(Parity Bit)이다.

패리티 비트는 통신 중 생기는 오류발생을 잡는 역할을 한다.

패리티 비트는 짝수 또는 홀수로 1의 개수를 만들어서, 오류를 판단하는 것으로 방법은 2가지 짝수 패리티와 홀수 패리티가 있다. (사실상 같은 방식 홀수로 맞출것인지 짝수로 맞출출것인지)

짝수 패리티를 사용한다하면, 현재 전송되는 데이터의 비트 1의 개수가 홀수면, 1을 맨 뒤에 붙여서 짝수로, 짝수라면 0을 맨 뒤에 붙여서 짝수로 1의 개수를 맞춰주는 것이다.
(이때 8비트로 완성되어 전송된다!)

우리가 만약 ! 기호를 입력하여 0100001(7비트)를 전기신호로 전송할때 뒤에 0을 붙여 (01000010) 1이 짝수개수다라고 보내며, 이떄 오류가 발생해 0과 1이 바뀔경우 (01000110) 마지막 수인 패리티 비트인 0을 보고 왜 어 짝수일텐데? 왜 1의 개수가 홀수지 하며 오류를 알아차리고, 지금 오류가 발생했음을 알려준다.

아스키 코드표

그 중 가장 대표적인 숫자, 대문자, 소문자 아스키 코드는 알아두자

숫자 : (0)48 ~ (9)57 (10개)
대문자 : (A)65 ~ (Z)90까지 (26개)
소문자 : (a)97 ~ (z)122 (26개)

유니코드(Unicode)의 등장

아스키코드는 문자 중 영어만 인코딩하도록 되어있어서 다른 나라의 언어에서 호환되지 않고, 지정되어있는 문자가 적고 한정되어 있는 문제점으로 인해 아스키코드를 기초로 두고 확장판으로 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 국제 표준 코드인 유니코드가 등장하게 되었다.

유니코드 인코딩 방식

UTF - 인코딩방식

유니코드에는 다양한 인코딩방식으로 UTF-1, UTF-7, UTF-8, UTF-EBCDIC, UTF-16,UTF-32기 있다.

  • UTF : 유니코드 인코딩 방식
  • UTF- 숫자 : 숫자는 한 문자를 표현하기 위해 필효한 비트(bit)이다.

가장 많이 쓰는 인코딩 방식은 UTF-8이다.

각국의 나라 언어표 참고

UTF-8 vs UTF-16

UTF-8

  • 한 문자를 나타내기 위해 8비트가 필요하다. (1 byte~ 4 bytes까지 사용)
  • 아스키코드와 완벽하게 호환된다. (영문을 표현할 때는 아스키코드와 동일하게 1바이트 사용)한글은 3바이트를 사용한다고 한다.
  • 가변식 인코딩 방식 : 1바이트로 표현할 수 있는 것을 1바이트만, 2바이트가 필요하면 2바이트를 사용하도록 하는 인코딩 방식이며, 쓸대없는 용량을 사용하지 않도록 해주는 것이다. (1바이트만 필요한 경우 4바이트를 사용하지 않도록)

UTF-16

  • 한 문자를 나타내기 위해 16비트가 필요한다. (2 byte~ 4 bytes까지 사용)
  • 기본 다국어 평면 (BMP, Basic multilingual plane)에 속하는 문자들(영어, 한글, 다른나라 언어) 등은 그대로 16비트 값으로 인코딩이 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이 된다.

용량이 중요할때, 인코딩방식에 신경쓰는데 만약 한글을 많이 쓴다면 16을 영어를 주로 쓴다면 UTF-8이 용량을 덜 차지한다.

예를 들어, 코 문자를 UTF-8로 표현하면, 다음과 같이 3byte의 결과로 표현됩니다.

1110xxxx 10xxxxxx 10xxxxxx # x 안에 순서대로 값을 채워넣습니다.
11101100 10111101 10010100

  • UTF-16의 특징

인코딩(부호화)이란?
인코딩이란 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것입니다.
이 신호를 입력하는 인코딩과 문자를 해독하는 디코딩을 하기 위해서는 미리 정해진 기준을 바탕으로 입력과 해독이 처리되어야 합니다.
이렇게 인코딩과 디코딩의 기준을 문자열 세트 또는 문자셋(charset)이라고 합니다. 이 문자셋의 국제 표준이 유니코드입니다.

참조
위키백과
나무위키
나라표
참고 블로그
참고 블로그

profile
느리지만 조금씩 공부하는 중 입니다. 현재 1년 6개월차 신입입니다 ><!

0개의 댓글