본문 바로가기

데이터 표현 개요 2장

문자형 데이터 표현

문자는 숫자, 알파벳 문자, 특수문자로 구성된 집합의 한 원소를 말합니다. 컴퓨팅 시스템마다 문자 집합은 서로 다르며 여러 개 합쳐진 문자를 문자열이라고 합니다. 문자가 기억 장소에 저장되는 단위는 바이트이며 1바이트에 한 문자씩 저장할 수 있습니다. 단 한글의 경우 2바이트에 하나의 문자를 표현할 수 있습니다.

 

문자형 데이터 표현은 컴퓨터 내부에서 영문자(대문자+소문자) 52자, 숫자 10자, 한글 2350자(ksc 5601), 한자4880자, 특수문자 등 기타 문자 830자로 표현할 수 있습니다. 정보를 표현하기 위한 기호 체계를 코드라고 하며 커뮤터 내부에서 정보를 표현하는 2진수 "1"과 "0"을 여러 개 조합한 것으로 우리가 일상생활에서 취급하는 데이터 또는 정보와 매핑하도록 되어 있습니다.

 

1) BCD 코드

BCD 코드는 2진화 10진 코드 또는 8421 코드라고도 부르며 2진수 체계를 사용해서 10진수를 표현하는 가장 기본적인 숫자 코드입니다. 2진수 네 자리를 사용하여 10진수 0에서부터 9까지를 표현하는데 이들 네 개의 값을 조합해서 표시합니다. 즉 1자리의 10진수를 BCD 코드로 표현하는 데는 2진수 4자리가 필요합니다.

 

2) 표준 BCD 코드

표준 BCD 코드는 숫자 코드인 BCD 코드에 두 개의 zone 비트를 확장한 문자 코드입니다. 컴퓨터에서 문자, 숫자, 특수 문자 등을 4비트로 표현하기에는 부족하기 때문에 BCD 코드에 존 비트를 확장한 것으로서 하나의 문자를 표현할 때 6개의 데이터 비트와 1개의 체크 비트로 구성되어 있습니다. 실제로 6개의 비트로 문자를 표현하는 종류가 64(2의 6제곱) 가지이며, 문자의 그룹을 표시하는 존 비트와 디지트 비트는 BCD로 표시하는 숫자 비트로 구성됩니다. 6개의 데이터 비트로 구성되어 있으며 그중에서 존 비트 2자리와 숫자 비트 4자리로 이루어져 있으면 패리티 비트는 1자리로 에러를 검출하는 비트로 구성되어 있습니다.

 

3) EBCDIC 코드

EBCDIC는 확장 2진화 10진 코드라고 하며 표준 BCD 코드로 문자를 표현할 경우 단지 64가지의 문자만 표현하는 단점을 보완하여 더 많은 수의 문자를 표현할 수 있도록 구성한 문자 코드로 오늘날 대부분의 컴퓨팅 시스템에서 사용하고 있는 코드입니다. EBCDIC 코드는 8비트 코드이므로 2의 8제곱, 256가지의 문자, 숫자, 등의 데이터를 표현할 수 있습니다. 구성은 8비트이며 존 비트는 각각의 문자를 식별하는 데 사용하고, 디지트 비트의 수치 비트로서 4비트 2진수가 코드화됩니다. EBCDIC 코드는 256문자까지 표현할 수 있어 많은 특수 문자와 영문자의 소문자 및 한글 표현까지 가능하며 주로 컴퓨터의 내부 코드로 사용합니다.

 

4) ASCII

ASCII 코드는 1968년 컴퓨터 통신을 하기 위하여 국제표준기구에서 개발하였으며 미국 국립표준연구소에 의해 제정되었습니다. 이 문자 코드의 목적은 각 시스템간의 코드 불일치로 발생하는 문제점들을 방지하고 특히 원거리 시스템 간의 데이터 통신에 공통의 코드값을 적용하기 위하여 제정한 코드로서 7비트와 8비트의 두 종료가 있습니다. ASCII 코드의 비트 번호는 EBCDIC와는 달리 오른쪽에서 왼쪽으로 부여합니다. 데이터 통신 업체에서는 ASCII 코드를 표준 코드로 취급하기 때문에 EBCDIC 코드보다 많이 사용되고 있습니다. 따라서 ASCII 코드로 전송되어 온 데이터를 EBCDIC 체계인 컴퓨터에서 처리할 때는 코드 변환을 하여 사용해야 합니다. 또한 정보교환용 코드로 컴퓨터 외부 코드로 많이 사용합니다.

 

5) 가중치 코드

가중치 코드란 2진수를 코드화했을 때 각각의 비트마다 일정한 크기의 값을 갖는 코드를 말하며 가중치를 부여하지 않는 코드를 논웨이티드 코드 또는 비가중치 코드라고 합니다.

(1) 8421 코드

8421 코드는 가장 많이 사용하는 대표적인 코드로서 10진수 1자리를 2진수 4자리로 표시합니다. 즉 0~9까지를 2진수인 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001로 표현하여 사용하는 것입니다. 8421 코드는 부호화하기가 쉽지만 원래의 수와 보수 사이에 상호변환을 위한 간단한 법칙이 없습니다.

 

(2) 2421 코드

2421 코드는 각 자리의 2진수 0을 1로, 1을 0으로 바꿈으로서 보수를 간단히 얻을 수 있습니다. 이렇게 2진수의 상호 교환에 의해서 보수를 얻을 수 있는 코드를 자보수 코드라고 합니다.

 

(3) 5421 코드

5421 코드는 맨 왼쪽 자리의 2진수 값이 0이면 4이하의 10진수이며, 맨 왼쪽 자리의 2진수 값이 1이면 5이상의 10진수라는 것을 알 수 있기 때문에 연산이 쉽습니다.

 

6) 넌웨이티드 코드

가중치를 갖지 않은 코드로서 비순서 코드, 비가중치 코드 또는 비연산 코드라고도 합니다.

(1) 그레이 코드

그레이 코드는 웨이트가 없는 코드로서 1비트씩 변해가면서 새로운 코드가 만들어지는데 이러한 특징 때문에 연산에는 부적당 하나 A/D 변환기나 입출력 장치의 코드로 주로 사용합니다. 또한 카르노 맵에서 00, 01, 11, 10으로 조합하는 경우를 생각하면 이해가 쉬울 것입니다. 

(2) 엑세스-3 코드

엑세스-3 코드는 논웨이티드 코드의 가장 대표적인 코드로서 8421 코드의 표현에 2진수 0011(10진수 3)을 더해서 만든 코드입니다. 엑세스-3 코드는 어떠한 경우에도 4비트 모두 0000이 될 수 없기 때문에 신호가 없는 때는 0000으로 숫자 0011(10진수 0)과 무신호와 구별되는 코드입니다. 또 덧셈에서 9보다 큰 수는 자동으로 0110(10진수 6)이 더해져서 2진화 10진법으로 보정됩니다.

 

7) 에러 검출 코드

에러 검출 코드는 10진수를 코드화하여 2진수로 나타냈을 때 잘못된 정보를 검출하거나 정정하는 기능을 가질 수 있도록 하는 기능을 하는 것입니다. 바이콰이너리, 링 카운터, 2 아웃 오브 5, 패리티 체크 코드가 있습니다.

 

8) 해밍 코드

해밍 코드는 에러 발생시 검출한 후 자체 교정이 가능한 코드를 말합니다.