코드 (1) - 개요

논리회로

2020. 1. 28. 13:55

1. Code 란?

  • Code(암호) : 코드는 암호화 전/후가 달라야하며, 암호자와 복호자 사이에 약속된 일정한 규칙에 의해 생성되어야 함. 암호화 전/후가 같거나 규칙이 일정하지 않으면 그것은 Non-Code (비암호)라고 함.
  • 최소비트 : $2^{n-1}$ ~ $2^n$개의 사건을 구분하기 위해서 $n$개의 비트가 반드시 필요 (9~16개 사건 구분 → 4개의 비트가 반드시 필요)

 

2. Code의 종류 개요

1) Binary Code (2진 코드) : 2진수로 나타낸 코드, 각 자리수가 의미하는 값이 다르게 가중되기 때문에 가중코드이며 21코드라고 부를 수 있음.

구분 1째 자리수 2째 자리수
0 0 0
1 0 1
2 1 0
3 1 1

 

2) Excess-1 Code (1초과 코드) : 2진코드에 일정한 숫자를 n을 더한 것을 n초과 코드(Excess-n code)라고 함. 각 자리가 가중치를 의미하지 않기 때문에 비가중 코드라고함. n초과 코드들 중 3초과 코드가 가장 유명함

구분 1째 자리수 2째 자리수
0 0 1
1 1 0
2 1 1
3 0 0

 

3) 2 out of 4 code : 항상 n개의 비트에서 1의 개수가 반드시 m개인 코드를 m out of n 코드라고 함. 1의 개수가 반드시 일정해야하는데 중간에 노이즈가 껴서 1의 수가 변경되면 에러를 검출할 수 있음. 때문에 이런 코드를 에러검출코드(Error Detection Code)라고 함.

 

3. 10진코드의 종류

10진코드란 10개의 사건(0~9)를 구별하기 위한 코드. 10개의 사건은 9와 16의 사이이므로 최소 4개의 비트가 필요함.

 

1) 8421 Code (BCD Code) : 10개의 사건을 구분하는 2진코드, 8421코드라고도 불리며 Binary Code Demical (10진수 2진코드)라는 말로 BCD코드라고도 불림. 정확히는 8421, 5421, 2421 등의 코드를 BCD코드라고 하고, 8421은 가장 대표적인 BCD코드임.

구분 1째 자리 (8) 2째 자리 (4) 3째 자리 (2) 4째 자리 (1)
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1

 

2) 84-2-1 Code : 코드는 가운데인 4와 5를 기준으로 [0, 9], [1, 8], [2, 7], ... 와 같이 더해서 9가 되는 수들의 집합이 1의 보수가 되는 특이한 성질이 있음. 이러한 코드를 자기보수코드(Self Complement Code)라고 부름.

구분 1째 자리 (8) 2째 자리 (4) 3째 자리 (-2) 4째 자리 (-1)
0 0 0 0 0
1 0 1 1 1
2 0 1 1 0
3 0 1 0 1
4 0 1 0 0
5 1 0 1 1
6 1 0 1 0
7 1 0 0 1
8 1 0 0 0
9 1 1 1 1

 

3) 2421 Code : 2, 4, 2, 1의 가중치를 가지는 코드. 2421코드 역시 Self Complement Code임.

구분 1째 자리 (2) 2째 자리 (4) 3째 자리 (2) 4째 자리 (1)
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 1 0 1 1
6 1 1 0 0
7 1 1 0 1
8 1 1 1 0
9 1 1 1 1

 

4) 5043210 Code : 5, 0, 4, 3, 2, 1, 0의 가중치를 갖는 코드. 2 out of 7 Code이며 오류 검출을 위해 사용될 수 있음.

구분 1째 자리 (5) 2째 자리 (0) 3째 자리 (4) 4째 자리 (3) 5쨰 자리 (2) 6째 자리 (1) 7째 자리 (0)
0 0 1 0 0 0 0 1
1 0 1 0 0 0 1 0
2 0 1 0 0 1 0 0
3 0 1 0 1 0 0 0
4 0 1 1 0 0 0 0
5 1 0 0 0 0 0 1
6 1 0 0 0 0 1 0
7 1 0 0 0 1 0 0
8 1 0 0 1 0 0 0
9 1 0 1 0 0 0 0

 

5) Excess-3 Code (3초과 코드) : 84-2-1 Code나 2421Code는 자기보수코드이지만 가중치코드임. 3초과 코드의 경우 자기보수 코드이면서 비가중치 코드임. 

구분 1째 자리 2째 자리  3째 자리  4째 자리
0 0 0 1 1
1 0 1 0 0
2 0 1 0 1
3 0 1 1 0
4 0 1 1 1
5 1 0 0 0
6 1 0 0 1
7 1 0 1 0
8 1 0 1 1
9 1 1 0 0

 

4. 3초과 코드의 연산

1) 연산 법칙

  • 캐리가 발생하지 않은 자리 → 3을 뺀다. (각각 3씩 6이 더해졌으므로 3을 뺀다)
  • 캐리가 발생한 자리 → 3을 더한다. (캐리로 못올라가고 남은 수는 8421코드이다)
  • 새롭게 추가된 자리 → 3을 더한다. (새로운 자리는 1이 아니라 4로 올려야한다)

 

이 법칙들을 적용하여 26 + 88을 계산해봄. 0101 1001 + 1011 1011의 중간 계산 결과는 0001 0001 0100이다. 첫째자리수는 추가된 자리수이기 때문에 3을 더하고 아래 두 자리에서 모두 캐리가 발생했으므로 모두 3을 더해주면 0100 0100 0111이고, 이는 114로 잘 계산됨.

 

2) 3초과 코드를 사용하는 이유 : Self Compliment 코드이면서 연산이 비교적 간단함. 때문에 보수계산을 이용하여 뺄셈 연산을 덧셈 연산으로 구현하기에 용이함.

 

5. Reference 

 

'논리회로' 카테고리의 다른 글

코드 (4) - 알파뉴메릭 코드 (ASCII, ANSI, Unicode)  (0) 2020.01.28
코드 (3) - 패리티 비트 & 해밍 코드  (1) 2020.01.28
코드 (2) - 그레이 코드  (0) 2020.01.28
음수 표현법 (보수)  (0) 2020.01.21
이진 연산  (0) 2020.01.17
진법과 변환  (0) 2020.01.17
디지털 시스템  (0) 2020.01.17