미국에서 정의하고 있는 표준, 영문 알파벳을 사용하는 대표적인 인코딩방식중 하나
초창기 문자 인코딩이며, 대부분의 문자 인코딩 방식도 아스키코드표를 기반으로 파생되었습니다.
아스키코드는
7BIT
인코딩으로 총1BYTE(8BIT)
에서 7bit를 사용하여 128개의
문자를 표현할 수 있습니다. (0~127)
나머지 1bit는 에러 검출을 위한
Parity bit
로 비워두어 총 1byte로 문자를 표현 합니다.
7bit중 1에 해당하는 개수가 홀수면 1, 짝수면 0으로 설정된Parity bit
를 전송 합니다.
패리티비트는 바이너리 데이터에서 1bit 오류를 검출하는 코드 방식 입니다.
패리티비트는 홀수(odd, 기수)와 짝수방식(even, 우수)이 있습니다.
예를 들면 120이라는 값을 8bit의 공간에 저장을 했다고 합시다.
120이라는 값은 컴퓨터에게 전달될 떄 2진수로 변경되어 기억장치의 특정 주소 위치에 저장 됩니다.
120이라는 값은 2진수로 1111000
입니다. 데이터를 컴퓨터 기억장치에 저장할 때
01111000
으로 저장될 것입니다. 이때 좌측에 1BIT가 남게 되는데, 1BIT를 0으로 채웁니다.
만약 지금 데이터 값에서, 120의 2진수 값 첫 번쨰 자리인 1이 0으로 변경 된다면
00111000
이라는 값이 되어 값을 읽어올 때 56이라는 값으로 들어있을 것 입니다.
또는 데이터가 손상되어 읽어올 수도 없을 수 있습니다.
그리고 제일 중요한 것은 소실된 데이터가 1인지, 0인지 유추할 수가 없습니다.
이전과 같이 120이라는 2진수 값에서, 맨 앞에 비어있는 비트를 맨 뒤로 옮긴 후 패리티비트
라고 정의 합니다.
현재 데이터는 1111000 0
이므로 (패리티비트제외) 1+1+1+1+0+0+0으로 짝수 입니다.
그러므로 패리티비트
는 0이 됩니다.
간단하게 설명하면, 데이터의 값이 짝수면 패리티비트
는 0, 홀수면 패리티비트
는 1입니다.
그리고, 홀수인 데이터 값도 패리티비트
가 1로 채워지기 때문에 1의 개수는 결과적으로 짝수가 됩니다.
그렇다면 지금 데이터 값 에서 첫 번째 1의 값이 오류로인해 없어진다면 어떻게 될까요?
맨 앞에 1이 사라져서
x1110000
이 된다고 해도, 맨 앞이 0인지 1인지패리티비트
를 보고 확인할 수 있습니다. 데이터 값을 확인 해보니, 맨 앞의 자리가 오류로 인해 확인할 수 없습니다.
하지만패리티비트
가 짝수이고 전달된 데이터 값이 1+1+1인 홀수라서 오류로 사라진 데이터 값이 1인것을 유추할 수 있습니다.
만약 데이터가 1110000 0
1+1+1+0+0+0+0 홀수 였다면, 패리티비트
또한 홀수가 되어
결과적으로는 1110001
로 짝수가 됩니다.
패리티비트 자체는 홀수 패리티비트 입니다
컴퓨터와 인터넷이 보급화되어 일반
아스키코드
만으로는 문자를 표현하기에 부족함이 생겼습니다.
영어권뿐만 아니라, 다른 나라에서도 문자열 셋을 사용해야 하므로 기존의 아스키코드 7bit(0-127)가 아닌 8bit를 아스키코드를 표현하는데 사용하여 총 256개의 문자를 표현할 수 있습니다일반 아스키 코드(0~127) + 확장 아스키 코드(128~255) = 총 256개
처음 멀티바이트 인코이 사용된 것은 CJK(Chinese-Japanese-Korean) 멀티바이트 인코딩으로
한국, 중국, 일본어는 문자의 수가 매우 많기 때문에 확장 아스키코드로도 부족함이 있었습니다.
이로 인해서1byte(8bit)
가 아닌 여러 byte를 통해 문자를 표현한 것이멀티바이트인코딩
입니다.
한국은 여러 인코딩 방식을 거쳐 왔습니다.
조합형 한글 인코딩
완성형 한글 인코딩
조합형 인코딩에서는 2byte 조합, 3byte 조합등등 여러 방식을 사용했고
완성형 인코딩에서는 EUC-KR
2350자 CP949
11172자를 사용하게 되었습니다.
많은 인코딩 방식에서 서로 다른 인코딩 방식을 사용하다보니 프로그램이나 문서 사이에서
정상적으로 인코딩 되지 않는 호환성에 문제가 발생하긴 했다.