제 2 장   데이터의 표현

2장 데이터의 표현

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

2.1 데이터 표현의 중요성

2.2 진법과 변환

2.3 2진수 연산

2.4 비트와 바이트

2.5 데이터 표현 방식

――――――――――――――――――――□□□□□□□□□□□

○ 데이터 표현의 형태

○ 최상의 데이터 표현

○ 데이터 표현의 특성

● 데이터 표현의 중요성

2.1 데이터 표현의 중요성

― 컴퓨터의 초기 수치적 응용 :

부동 소숫점 자리수

한정된 수의 유효 숫자의 2진 표현

― 상업적 응용 :

영숫자 표기(alphanumeric text)

― 수치 해석:

부동 소숫점(과학용 표기):

― 문제 해결의 융통성과 프로그램 작성시의 용이성

1111	0011	1111	0101	1111	0110

데이터의 기본적 단위 : 2 진수

― 데이터의 기본적인 단위 : 비트(bit) ∀ 2 진수

비트(BIT) 는 두 가지 상태의 부호를 가진

이진 코드(binary code)

□데이터 집합에 대한 의미는 메모리 내에서 데이터를 표현하는	비트를 어떻게 해석하느냐 ?□

● 진법과 변환

2.2 진법과 변환

― 10진법에서 345와 5678 :

345 = 3 × 102 + 4 × 101 + 5 × 100

5678 = 5 × 103 + 6 × 102 + 7 × 101 + 8 × 100

― 일반적 10진수 표현법

an10n-1 + an-110n-2 + an-210n-3 + … + a0100

+ a-110-1 + a-210-2 + …

(단, an, an-1, an-2, …, a0, a-1, a-2, … 는 0, 1, 2, …, 9까지의 어떤 정수)

― R 진법으로 표시되는 수 N :

n

N = anan-1 …  a2a1a0 . a-1a-2…a-m = ¤ ai[eqn: R^{i}]                                                                       i=-m

R : 기수(Radix) ― 정수

○ 10 진법

10 진법(decimal notation) : 0 에서 9 까지 10 개의 수 사용

10 진법(decimal number)의 기수(radix) : 10

10 진수 953.24 :

953.24 = 9 ×102 + 5 ×101 + 3 ×100 + 2 ×10-1 + 4 ×10-2

= 900 + 50 + 3 + 0.2 + 0.4

― 10진수에서  임의의 진수로 변환 :

10진수를 임의의 진수로 나누어서 나머지를 구하고,

그 몫을 임의의 진수로 나누어 몫이 0이 될 때까지 반복

소수인 경우는 그 소수에 임의의 진수를 곱하고

정수 부분만 구하는 과정을 반복

○ 2 진법

― 2 진법(Binary notation) :  0 과 1 의 2 개의 숫자만 사용

기수는 2

예)

(1101.01)2 = 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 + 0 × 2-1 + 1 × 2-2

= 8 + 4 + 0 + 1 + 0 + 0.25

= (13.25)10

즉, (1101.01)2 = (13.25)10 이다.

○ 8 진법

― 8 진법(Octal notation) : 0 ∼ 7 의 8 개의 수를 사용

기수는 8

(526.32)8 = 5 ×82 + 2 ×81 + 6 ×80 + 3 ×8-1 + 2 ×8-2

[eqn: = 320 + 16 + 6 + 1 + 3 over 8 + 2 over 64]

= (342.2968…)10

○ 16 진법

16 진법(Hexadecimal notation) : 16 개의 숫자 필요

아라비아 숫자 10 개와 알파벳의 6 자 사용

표 2-1.  10진수와 16진수

10진수	0	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15
16진수	0	1	2	3	4	5	6	7	8	9	A	B	C	D	E	F

(B6.C7)16  =  B × 161 + 6 × 160 + C × 16-1 + 7 × 16-2

=  11 × 161 + 6 × 1 + 12 × 16-1 + 7 × 16-2

= 176 + 6 + 0.75 + 0.0273

= (182.7773)10

즉, (B6.C7)16 ≒ (182.7773)10 이다.

○ 진법의 변환

― 10 진수를 임의의 어떤 진수로의 변환 :

진수 나누기(radix division)를 사용

(1) 임의의 10 진수를 변환시키고자 하는 진법의 밑수           (base)로 나누어서 나머지를 구한다.

(2) 몫은 밑수로 나누어서 몫이 0 이 될 때까지 나머지를            반복한다.

○ 2 진수 연산

2.3 2진수 연산

― 2 진수의 연산은 10 진수를 연산하는 원리와 동일

차이점 : 자리 올림(carry)이 자주 발생한다는 점

★ 2 진 연산에서는 1 보다 값이 커지면 윗 자리로 올라가는

자리 올림이 발생

○ 덧 셈

― 2 진법의 덧셈 : 1 비트의 덧셈이 기본

0          0          1          1

+)  0      +)  1      +)  0       +)  1

00         01         01         10 ←합(sum)

□□□자리 올림(carry)

(예제 2.4)  2진수 (1011011)2 와 (1011010)2 를 덧셈하시오.

1011011                  91

+) 1011010              +)  90

10110101                (181)10

○ 뺄 셈

― 뺄셈 : 덧셈의 역 연산

빌림수

∩

0          1        1           10

-) 0       -) 0     -) 1        -)  1

00         01       00           11 ＠□ 차(difference)

□□□ 빌림(borrow)

★ 0 - 1 은 빌림수(borrow)라는 개념을 도입해서 처리

빌림수라는 것은 상위 자리로부터 1 을 빌려와서 (2를

빌린 것과 같음) 1 을 빼는 것( 10진법 뺄셈에서

모자랄 때 바로 윗자리에서 10을 빌려와서 빼는

것과 같다)

(예제 2.6)  (110101)2 - (101101)2 를 셈하시오.

110101                53

-) 101101             -) 45

001000                (8)10

○ 곱 셈

― 2 진법의 곱셈 : 10 진법의 곱셈과 동일

(부분적으로 곱하고 자리를 옮겨 덧셈)

★ 2 진수 0 과 1 의 곱셈에 관한 조합

0          0            1            1

×) 0       ×) 1       ×)  0       ×)  1

0          0            0            1

(예제 2.7)  2진수 1101 과 101 의 곱셈을 하시오.

1101                     13

×)    101                 ×)  5

1101 □□□□□□□□Ｂ  65

0000  □

1101   □

1000001 □

○ 나 눗 셈

― 2 진법의 나눗셈 : 나눗셈은 나누기를 하여 단 1회에 어떤 수의 일부가 나누어지는가 아니면 나누어지지 않는가 하는 것

★ 1 혹은 0 이외의 몫이 택해지는 일은 없다

(제수로 피제수를 나누어 뺀 다음 피제수를 아래자리에 내리면     서 계산)

(예제 2.8)  다음을 나누시오.

5                      101

2 － 10                10 －1010

10                      10

0                      01

00

10

10

0

19                     10011

13 － 253           1101 －11111101

13                   1101

123                   0101

117                   0000

6                   1011

0000

10110

1101

10011

1101

0110

● 비트와 바이트

2.4 비트와 바이트

― 데이터는 2 진수의 모임, 즉 비트(bit) 단위의 조합으로 표현

비트 : 2 진수의 한자리 또는 2 진수를 나타내는

숫자 0 이나 1

비트수                                  표현정보

□□□□□□□□□□□                            □□□□□□□□□□□□□□□□□

1  BIT               □                21 =     2 개

2  BIT              □□               22 =     4 개

3  BIT             □□□              23 =     8 개

□                 □                □

□                 □                □

□                 □                □

8  BIT         □□□□□□□□        28 =   256 개

☆ □ 안은 0 이나 1 로 채워짐

☆ 2n(n > 0)개라는 의미는 2n 개의 문자(character)를

나타낼 수 있다는 뜻

☆ 비트 조합의 단위에 따라 니블(nibble), 바이트(byte),

워드(word)로 구분

니블 : 4 비트  바이트 : 8 비트  캐릭터(charater) :  6 비트

워드(word) : 한 단위로 취급되는 비트들의 모임

(캐릭터 또는 바이트들의 모임)을 말한다.

1 워드를 구성하는 비트의 수:  컴퓨터의 종류에 따라 차이

8 비트 컴퓨터 : 1 워드  1 바이트

16 비트 컴퓨터 : 1 워드  2 바이트

32 비트 컴퓨터 : 1 워드  4 바이트

□         8 bit            □

8비트 = 1바이트 = 1워드

□  1 byte   □□□ 1 byte□□

16비트 = 2바이트 = 1워드

□ 1byte □ 1byte □ 1byte  □1byte □

32비트 = 4바이트 = 1워드

★  하프 워드(half word) : 2 바이트

풀 워드(full word) : 4 바이트

더블 워드(double word) : 8 바이트

― 워드의 길이의 종류:

1. 고정 길이 워드(fixed length word) :

항상 워드의 길이를 일정한 크기로 정해두는 것

(과학 기술 계산용 컴퓨터)

2. 가변 길이 워드(variable word) :

문자 데이터용으로 길이에 따라 워드의 비트 길이가 변하는 방식 (일반 사무 계산용 컴퓨터)

예) 16 비트 1 워드 고정 길이 워드 :

모든 정보의 출입을

1 워드(16비트) 단위(one word unit)로 수행

16 비트 컴퓨터에서는 문자 : 2 문자

2 진화 10 진수(BCD): 4자리의 수치

2 진수 : (65535)10 까지의 정수를 표현

단점 : 고정 길이 워드에서는 한 개의 문자로 끝나는 정보              도 16 비트로 표현하므로 비경제적

장점 : 계산 처리가 쉽기 때문에 대부분 수치만을 취급하는

기술 계산용에 적합

사무 계산 : 가변 길이 워드의 바이트 머신(byte machine)                    이 편리

( 6∼8 개의 문자로 구성되는 정보도 많으나

계산 처리는 비교적 단순)

― 바이트 머신(byte machine) : 하나의 문자를 표시하는 단위       가 바이트 단위로 기억

― 워드 머신(word machine) : 하나의 문자를 표시하는 단위가       워드 단위로 기억

― 기억 장치 :  바이트와 워드 단위에 번지가 지정

번지를 사용해서 기억 장치에 정보를 액세스

― 기억 용량의 국제 표준화 단위는 다음과 같다.

1  KB(kilo bytes) = 1024 byte

1  MB(mega bytes) = 1024 KB

1  GB(giga bytes) = 1024 MB

1  TB(tera bytes) = 1024 GB

기 호	단 위	수 치
T(tera) G(giga) M(mega) K(kilo) m(mili) □(micro) n(nano) p(pico) f(femto) a(atto)	1012 10 9 10 6 10 3 10-3 10-6 10-9 10-12 10-15 10-18	1,000,000,000,000 1,000,000,000 1,000,000 1,000 0.001 0.000001 0.000000001 0.000000000001 0.000000000000001 0.000000000000000001

( 참고 : 세계 표준의 수치 단위 )

● 데이터 표현 방식

2.5 데이터 표현 방식

― 숫자 데이터 형식(numeric data format)

문자 데이터 형식(character data format)

○ 숫자 데이터 형식

― 숫자 : 부호(sign), 크기(magnitude), 소수점(point)으로 표시

n 비트의 숫자를 부호 비트까지 고려하면

(n+1)비트가 필요

― 숫자 데이터 형식의 종류 :

고정 소수점 데이터 형식(fixed point data format)

부동 소수점 데이터 형식(floating point data format)

10 진 데이터 형식(decimal data format)

○ 고정 소수점 데이터 형식

― 2 진수의 음수까지 고려한 수의 고정 소수점 표현

부호 절대값 표현(signed magnitude)

1 의 보수 표현(signed-1's complement)

2 의 보수 표현(signed-2's complement)

세 가지 모두 맨 왼쪽의 비트가 부호 표시( 1: 음수, 0: 양수)

― 부호 절대값 표현 :

음수를 표현하는 데 1 비트로 부호를 나타내고

나머지 비트들로 그 수의 절대값 크기를 표시

― 보수표현의 두 방식 :

자리수의 1 및 2 의 보수로써 음수를 표시

예)  7 비트로써 수를 표시하는 경우

+9 : 0 001001로 이는 세 가지 표현 방식에서 동일

-9 : 부호 절대값 표현 방식에서 -9 는

+9 의 표현에서 부호 비트만 바뀜

◇  1 의 보수인 경우 : 모든 비트의 보수

◇  2 의 보수의 경우 : 부호 비트까지 포함한 2 의 보수

부호 절대값 표현 방식 : 1 001001

1 의 보수 표현 방식   : 1 110110

2 의 보수 표현 방식   : 1 110111

예) 1. 부호 절대값의 경우 : 두 수를 비교하여 큰 수에서 작은수를 뺀 후 큰 수의 부호 붙임

2. 1 의 보수 표현 : 부호 비트 포함 두 수를 더한 후 그 결과 캐리가 생기면 결과에 1을 더한 후 다음 캐리 무시

3. 2 의 보수 표현으로 표시된 음수의 연산 :

부호 비트를 포함해서 두수를 더한 다음 carry가 생	기면 carry를 버림

★   2 의 보수 : 0 을  한가지로 표현

1 의 보수의 경우:  + 0 과 - 0

예) +9 와 -9 를 1의 보수로 나타내어 더하는 경우

+ 9            0 001001

+ ) - 9        + ) 1 110110

- 0            1 111111

이것이 -0 으로 되는데 이 수의 보수 즉, 0 000000는 +0이 된다.

― 0 의 세 가지 표현 방식

+0          -0

부호 절대값 표현 방식  : 0 000000    1 000000

1의  보수 표현 방식    : 0 000000    1 111111

2의  보수 표현 방식    : 0 000000       없음

― 2 진수의 뺄셈 :  부호 비트를 포함하여 감수의 2 의 보수를

피감수에 더함

(±A) - (-B) =   (±A) + (+B)

(±A) - (+B) =   (±A) + (-B)

★ 뺄셈은 모두 덧셈으로 대치 가능하므로

덧셈을 위한 논리 회로만 있으면 된다.

★ 컴퓨터는 2 의 보수법을 사용하면

-0 을 처리해야 하는 불편을 덜 수 있음

― 고정 소수점 표현에서 정수의 표현 범위 :

±(2k-1 -1)

k 비트: 수의 크기

1 비트 : 부호

예) 8 비트 : ±(27-1) = ±127

― 2 의 보수에 의한 표현은 -0을 나타내지 않게 되므로

다른 두 방식 보다 수 하나를  더 표현 가능

★ 8 비트의 경우에서 1 의 보수 및 2 의 보수 표현 범위:

공 통	1의 보수	2의 보수
+126=0 1111110 +127=0 1111111 +128=(불가능)	-126=1 0000001 -127=1 0000000 -128=(불가능)	-126=1 0000010 -127=1 0000001 -128=1 0000000

표 2-3. 고정 소수점의 범위 (8비트의 경우)

― 2 의 보수에 의한 표현 범위: +(2k-1-1) ∼ -2k-1

디지털 컴퓨터 :  오버플로우(overflow)가 발생

(모든 레지스터의 길이가 한정)

★ n 자리의 두수를 더해서 (n + 1) 자리의 합을 얻었을 때

(n + 1) 비트의 결과는 표준 길이 n 비트의 레지스터에

저장불가

★ end around carry 와 overflow

○ 부동 소수점 데이터 형식

― 부동 소수점 데이터 형식(floating point data format) :

수치 중에서 소수점이 특정 위치로부터 얼마나 이동하고 있	는 지를 표시하는 수를 포함시키는 방법

― 부동 소수점 수의 두 부분  ∀

1. 가수(소수 또는 정수) 부분(mantissa part 혹은fraction)

부호가 첨가된 고정 소수점

2. 지수 부분

예) 10 진수 +6132.789는 다음과 같이 나타내진다.

부호                          부호

0 6132789                     0    04

□□□□□                    □□□□□

가수 부분(mantissa part)   지수 부분(exponent part)

― 일반적 부동 소수점 표현 :  m × re

가수 부분 m   과  지수 e : 실수 정수 표시

기수 r 과 가수 부분에서 소수점 : 고정(약속)

― 정규화(normalized) : 부동 소수점 표현 방식에서 같은 값의 수를 여러 가지로 표현할 수 있는 결점을 없애기 위하여 가수 부분의 최대 유효 디지트가 0이 아닌 값을 갖도록 표현

○ 10진 데이터 형식

― 10 진 데이터 형식(decimal data format) :

10 진수 한 자리를 4 비트로 표현할 때 BCD 코드를 사용

팩 형식(packed format)과 존 형식(zone format, unpack format) 중 한가지 형식의 2 진수로 표현

○ 팩 형식 (packed format) :

― 수를 나타낼 때, 0 에서부터 9 까지의 10 진수를 표현 ∀

숫자 부분(numeric part)은 4 비트만 바뀌면서 표현됨

― 숫자 부분만을 사용하는 10 진수 연산 ∀

존(zone) 비트 10 진수 형식을 사용하면 처리 시간과 기억	장소 낭비 → 1 바이트(8비트)에 두 자리 수 기억

― 팩 10 진수 형식(packed decimal number format)

최하위 바이트(오른쪽 끝 바이트)의 하위 4 비트로 표시

숫 자	숫 자	숫 자	숫 자	…	숫자	부호

□□□□      □□□□     …       □□□□

바이트        바이트                바이트

그림 2-1  팩 형식

○ 존 형식 (zone format, unpack format)

― 존 형식(언팩 형식)은 한 바이트에 한 자리 10진수 표현

― 데이터를 표현하는 바이트 중에 최하위 바이트의 존 비트	(zone bit:상위 4비트)가 그 데이터의 부호 표시

― 존 10진수의 부호는 데이터를 나타내는 최우단(최하위) 바이트의 존 비트(상위 4비트)를 이용하여 표현, 양수의 데이터는 16진수 C(1100)로 나타내고 음수의 데이터를 나타낼 경	우에는 16진수 D(1101)로 표현하며, 부호를 가지지 않는 데이터는 16진수 F(1111)로 나타냄

― 부호가 없는 데이터는 모두 양수

★ 존 10 진수에서 최하위 바이트를 제외하고

모든 바이트의 존 부분은 1111로 표현

존 비트	숫 자	존 비트	숫 자	…	부호	숫자

□□□□□  □□□□□            □□□□□

바이트      바이트                바이트

그림 2-2  존 형식

(예제 2.9)  356이라는 수의 표현 ∀

존 비트   숫자   존 비트   숫자    부호    숫자

1111	0011	1111	0101	1111	0110

□□□□□      □□□□□        □□□□□

F3             F5              F6

+356이라는 수의 표현 ∀

존 비트  숫자    존 비트   숫자   존 비트   숫자

1111	0011	1111	0101	1100	0110

□□□□       □□□□□        □□□□□

F3               F5              C6

-356 이라는 수의 표현 ∀

존 비트	숫자	존 비트	숫자	존 비트	숫자
1111	0011	1111	0101	1100	0110

□□□□□       □□□□□        □□□□□

F3               F5                D6

(예제 2.10)  -1998이라는 수의 표현 ∀p. 50

존형식: F1 F9 F9 D8

팩형식: 0 1 9 9 8 D

○ 문자 데이터 형식

― 컴퓨터의 응용

수의 데이터를 문자 데이터까지 확대 ∀ 4 비트로 부족

― BCD코드 ／ 2 BIT : 6 비트로 표현(그림 2-3)

상위의 2비트 : 존 비트(zone bit)

하위 4비트 : 디지트 비트(digit bit)

― 6 비트의 코드에서는 (26) = 64 개의 문자 표현

존 비 트				디지트 비트
00	01	10	11
0 1 2 3 4 5 6 7 8 9 = or # @	& A B C D E F G H I + or 0 <> or )	- J K L M N O P Q R S T *	blank / S T U V W X Y Z \= ( or %	0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0

표 2-4.  BCD 코드표

○ EBCDIC 코드

― EBCDIC는 BCD를 확장시킨 것으로써 데이터 비트 8개와	페리티 비트 1개로 구성

― 데이터 비트 8개 : 4개의 존 비트 와 4개의 디지트 비트

로 나누어진다.

존 비트         디지트 비트

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

7    6    5    4   3   2   1    0

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□                            □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

□□□□□□□□□□□□□□□□□

□□□□□□□□□□□     □□□□□□□□□□□□□□

11 : 영문자의 대문자와 숫자    00 : 영문자 A~ I의 표현

10 : 영문자의 소문자 표현      01 : 영문자 J ~ R의 표현

01 : 특수 문자의 표현          10 : 영문자 S ~ R의 표현

00 : 아직 문자 지정이 않됨     11 : 숫자의 표현

(즉, 여분이 남아 있음)

그림 2-4   EBCDIC 코드의 구성

비트	01	00				01				10				11
4567 23		00	01	10	11	00	01	10	11	00	01	10	11	00	01	10	11
0000		NUL	DEL	DS		SP	&	-						{	}	\	0
0001		SOH	DCI	SOS						a	j	~		A	J		1
0010		STX	DC2	FS	SYN					b	k	s		B	K	S	2
0011		ETX	TM							c	l	t		C	L	T	3
0100		PF	RES	BYP	PN					d	m	u		D	M	U	4
0101		HT	NL	LF	RS					e	n	v		E	N	V	5
0110		LC	BS	ETB	UC					f	o	w		F	O	W	6
0111		DEL	IL	ESC	EQT					g	p	x		G	P	X	7
1000		GE	CAN							h	q	y		H	Q	Y	8
1001		RLF	EM							i	r	z		I	R	Z	9
1010		SMM	CC	SM		C	|	:	.							LVM
1011		VT	CU1	CU2	CU3	.	$	,	#
1100		FF	IFS		DC4	<	*	%	@
1101		CR	IGS	ENQ	NAK	(	)	-	.
1110		SO	IRS	ACK		+	;	>	=
1111		SI	IUS	BEL	SUB	|	.	?	"

표 2-5.  EBCDIC 코드표

― EBCDIC 코드 :

아직 사용하지 않는 여분의 코드가 있어서 그래픽 등과 같은 응용 문제의 제어 문자로 지정할 수 있다.

― EBCDIC 코드는 256 문자까지 표현할 수 있어 많은 특수 문자와 소문자 및 한글 표기까지 가능하다.

○ ASCII 코드

― ASCII 코드는 미국 표준 협회에서 제정한 7 개의 데이터 비       트로 한 문자를 표시하는 코드

― 3 개의 비트와 4 개의 디지트 비트로 구성

1 개의 패리티 비트를 포함

128가지의 문자 코드를 지정

패리티     존 비트                 숫자

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

P	C	B	A	8	4	2	1

1      0      0  :  문자  A ∼ 0

1      0      1  :  문자  P ∼ Z

0      1      1  :  숫자  O ∼ 9

그림 2-5  ASCII 코드의 구성

― 통신의 시작과 종료, 라인 피드 등의 제어 조작을 표시(데이	터 통신)

★ 필요한 모든 문자를 표현한 것으로 여분이 없다.

○ 가중 코드(weighted code)

― 가중 코드(weighted code)란 2 진수를 코드화 했을 때 각각      의 비트마다 일정한 크기의 값을 갖는 코드,

― 그렇지 않은 코드를 비가중 코드(non weighted code)

― 웨이트를 갖는 대표적인 코드에는 8421 코드, 2421 코드,	5421 코드, 7421 코드 등

◆ 8421 코드

◆ 2421 코드

― 2421 코드는 2 진수의 상호 교환에 의하여 얻을 수 있는 자	기 보수 코드(self complementing code)로서 각 자리의 2	진수 0 을 1 로, 1 을 0 으로 바꿈으로써 얻어진다.

○ 기타 가중 코드

현재 4 비트 BCD 코드의 종류는 여러 가지가 있으나 표 2-8 에 나타난 코드는 모두 가중 코드로서 각각 그 명칭에 의해 표시되도록 되어 있다. 이들 코드들은 디지털 회로의 용도에 따라 각각 사용된다.

10 진수	여러 가지 코드
	5421	5211	7421	[eqn: rm 74 bar21]	51111
0 1 2 3 4 5 6 7 8 9	0000 0001 0010 0011 0100 1000 1001 1010 1011 1100	0000 0001 0011 0101 0111 1000 1001 1011 1101 1111	0000 0001 0010 0011 0100 0101 0110 1000 1001 1010	0000 0111 0110 0101 0100 1010 1001 1000 1111 1110	00000 00001 00011 00111 01111 10000 11000 11100 11110 11111

표 2-8. 기타 가중 코드의 예

○ 비 가중 코드(non-weighted code)

비가중 코드는 웨이트(weight)를 갖지 않은 코드

그레이 코드(gray code)

Excess-3 코드

시프트 카운터 코드(shift counter code)

2-out-of-5 코드

○ 기타 코드

◆ 에러 검출 코드

검출용 비트를 패리티 비트(parity bit)라고 한다.

10 진수	비퀴너리 코드 (5043210)	2-out-of 5 (74210)	링 카운트 코드 (9876543210)
0 1 2 3 4 5 6 7 8 9	0100001 0100010 0100100 0101000 0110000 1000001 1000010 1000100 1001000 1010000	11000 00011 00101 00110 01001 01010 01100 10001 10010 10100	0000000001 0000000010 0000000100 0000001000 0000010000 0000100000 0001000000 0010000000 0100000000 1000000000

표 2-11. 에러 검출 코드

10진수	여러 가지 코드					1의 합계
	23	22	21	20	패리티비트
0 1 2 3 4 5 6 7 8 9	0 0 0 0 0 0 0 0 1 1	0 0 0 0 1 1 1 1 0 0	0 0 1 1 0 0 1 1 0 0	0 1 0 1 0 1 0 1 0 1	1 0 0 1 0 1 1 0 0 1	1 1 1 3 1 3 3 3 1 3

표 2-12.  2진화 10진 코드와 패리티 비트

◎ 해밍 코드

해밍 코드(hamming code)는 에러 검출은 물론 교정까지도 할 수 있는 코드이다. 이 코드는 표 2-13에 표시한 바와 같이 1, 2, 4번째 비트는 패리티 비트이고 3, 5, 6, 7번째 비트는 8, 4, 2, 1의 웨이트(weight)를 갖는다.

해밍 코드의 패리티 체크 비트 C1, C2, C4는 각각 다음과 같은 기능을 갖는다.

· C1 은 1, 3, 5, 7 번 비트에 대한 우수(짝수) 패리티 체크

· C2 은 2, 3, 6, 7 번 비트에 대한 우수(짝수) 패리티 체크

· C4 은 4, 5, 6, 7 번 비트에 대한 우수(짝수) 패리티 체크

그러면 예를 들어 10 진수 9 의 교정 과정을 살펴 보도록 한다. 다음에 정상적인 해밍 코드가 있다고 하자.

C1    C2    8    C4    4     2    1

0	0	1	1	0	0	1

(정상 코드)

이 코드에 에러가 발생하여 다음과 같이 내용이 바뀌었다고 가정하면,

C1    C2    8     C4    4     2     1

0	0	1	1	1	0	1

(에러가 발생한 코드)

― 해밍 코드에 패리티 체크 비트를 이용한 에러 비트 검출

◎ 에러비트 검출 과정

(행 번호)

1       2       3      4      5       6       7

0	0	1	1	1	0	1

C1 : 1, 3, 5, 7 비트   0 1 1 1 ∀ 1 이 홀수개

C2 : 2, 3, 6, 7 비트   0 1 0 1 ∀ 1 이 짝수개

C4 : 4, 5, 6, 7 비트   1 1 0 1 ∀ 1 이 홀수개

→ 에러 체크 워드 :  1 0 1(2)  → 5(10)

★ 에러 체크워드 2 진수 101 을 10 진수로 변환 : 5

∀ 앞에서 5번째 비트가 틀려있다.