Kraklog

숫자 코드 본문

Study/디지털논리회로

숫자 코드

Krakens 2023. 8. 14. 12:58
728x90

1. BCD코드 (Binary Coded Decimal : 2진화 10진코드, 8421코드)

BCD코드는 0~9까지로 이루어진 10진수를 2진화한 코드로 8,4,2,1 의 순서로 가중치를 두어 2진수를 표현하는 코드인데, 실제 표기는 2진수 이지만 10진수 처럼 사용한다.
따라서 1010 ~ 1111까지 (4개의 비트이기 때문에 16까지 표현 할 수 있지만 0~9까지만 사용하기때문)는 사용하지 않는다.

예를 들어서 67인 경우 

  로 표현이 가능하다.

BCD 덧셈은 다음과 같다.  과정중 0110 (10진수 6)을 더했는데, 각 자릿수별로 9를 넘어가는 경우 6을 더해줘야 한다.
그 이유는 사용하지 않는 6개의 코드의 영역을 고려해서 자리 올림을 하기 위해서이다.

 

2. 3초과 코드 (excess -3code)

3초과 코드는 8421코드에서 3을 더하여 나타낸 코드이다. 3초과 코드는 10개의 코드만 있는 10진 코드이며 

10진수를 3초과 코드의 형태로 변환하려면 10진수의 각 자릿수에 3 (1011)을 더해주면 된다. 

3초과 코드에는 0000, 0001, 0010, 1101, 1110, 1111이 없는 코드이며 3초과 코드는 자기 보수의 성질을 갖고 현재값에서 1의 보수를 취하면 10진수에서 9의 보수에 해당하는 값이 된다.

예를들어 10진수 5의 9의 보수는 4인데 각각 0101 , 0100 이며 3초과 코드로 나타내면 1000과 0111이 되며, 자기 보수 관계가 됨을 알 수 있다.

 -3초과 코드는 8421과 달리 언웨이트 코드이며 다음과 같은 감산 규칙을 따른다.

  1. 10진수의 각 자리의 덧셈 합이 9보다 작거나 같은 경우 항상 6을 초과하기 때문에 3초과 코드로 바꾸기 위해 각자리마다 3을 빼주어야 한다.
  2. 10진수의 각 자리의 합이 9를 초과하는 경우 올림 (carry)이 발생하는데, 3초과 코드로 만들어주기 위해서는 올림수가 발생한 그룹에 3을 더해야한다.  

3.기타 코드 

  • 가중치 코드(weighted code)
    가중치 코드는 각 비트 위치에 따라서 값이 정해진 코드다. 8421, 3초과 코드 외에도 다양하게 쓰이고 있으며 대표적으로 5421, 7421 등의 4비트 BCD코드들이 있다. 

https://m.blog.naver.com/tooth_/221114535317

  • 비가중치 코드(unweighted code)
    비가중치 코드는 각 위치에 해당하는 값이 없는 코드를 말하며, 3초과 코드, 5중 2코드, 시프트 카운터 코드, 그레이코드 등이 있다.
    5중 2코드는 5비트 중에서 2비트만 1이 되도록 만들어진 코드이며 이와 같이 데이터 변환과 같은 특수한 용도로 사용한다.

3.그레이 코드

그레이 코드는 언웨이티드 코드로 연산에는 잘 사용되진 않지만 전송,입출력장치,A/D 컨버터 등 주변장치에서 사용된다.
연속되는 코드들 간에 한 비트만 변하여 새로운 코드가 되며, 입력 코드로 사용하면 오차가 줄어드는 특성을 이용한다.
예를 들어 10진수 4에 해당하는 그레이코드 0110과 10진수 5에 해당하는 그레이코드 0111은 첫째 자릿수에 1의 유무의 차이만을 보인다.

그레이코드 - 2진수 변환

2진 코드를 그레이 코드로 변환하기 위해서 MSB는 그대로 쓰고, XOR을 이용하여 각자릿수를 비교한다. 
그레이코드를 2진 코드로 변환하기 위해서 MSB는 그대로 쓰고 생성된 2진 비트와 그레이코드를 XOR을 이용해 비교해준다.

 

3. 패리티 비트 (Parity bit)

디지털 시스템은 아날로그 시스템에 비해 정확한 데이터 송수신의 장점을 갖지만, 여러 형태의 잡음과 오동작과 같은 상황으로 인해 데이터가 잘못 전달되는 경우가 발생하기도 한다.
주로 컴퓨터 내부의 주기억장치의 메모리 모듈에서 볼 수 있으며 메모리에 저장하거나 전송하는 경우 패리티를 붙여서 전송한다.
 일반적으로 패리티비트는 7비트에 1비트를 추가되는 형식으로 이루어지며 한 비트에서 여러 에러가 발생해야 검출이 가능하다.

  • 짝수 패리티 (Even parity)
    패리티 코드 내의 데이터 비트와 패리티 비트의 1의 전체 개수가 짝수가 되도록 패리티 비트를 "0" 혹은 "1"로 결정한다. 
  • 홀수 패리티 (Odd parity)
    패리티 코드 내의 데이터 비트와 패리티 비트의 1의 전체 개수가 홀수가 되도록 패리티 비트를 결정한다. 
  • 병렬 패리티
    1차원 패리티를 확장해 가로 세로로 표현한것이다. 
    가로 세로 1 바이트 패리티를 만들어 블록 단위로 전송하고, 검사하면 에러를 찾아 낼 수 있고 정정 할 수 있다.

728x90

'Study > 디지털논리회로' 카테고리의 다른 글

논리회로  (0) 2023.08.14
문자 코드  (0) 2023.08.14
진법 연산 - 연산과 보수(2)  (0) 2023.08.14
진법 연산 - 연산과 보수(1)  (0) 2023.08.13
진수  (0) 2023.08.13