비가중치 코드
IT 위키
- Non-weighted Code; 비가중치 코드
- 각 비트 자리에 고정된 자릿값(가중치)이 없는 2진 코드
| 구분 | 가중치 코드 | 비가중치 코드 |
|---|---|---|
| 자릿값 | 각 비트에 값이 정해져 있다 | 정해져 있지 않다 |
| 10진수 변환 | 가중치를 더하면 된다 | 변환 규칙을 따로 거쳐야 한다 |
| 예 | BCD(8421), 2421, 5421, 51111, 바이퀴너리 | 3초과 코드(Excess-3), 그레이 코드, 5중 2 코드 |
- Excess-3; XS-3
- BCD(8421) 코드에 2진수 3(0011)을 더한 코드
| 10진수 | BCD(8421) | 3초과 코드 |
|---|---|---|
| 0 | 0000 | 0011 |
| 1 | 0001 | 0100 |
| 2 | 0010 | 0101 |
| 3 | 0011 | 0110 |
| 4 | 0100 | 0111 |
| 5 | 0101 | 1000 |
| 6 | 0110 | 1001 |
| 7 | 0111 | 1010 |
| 8 | 1000 | 1011 |
| 9 | 1001 | 1100 |
자기 보수(Self-complementing) 성질이 있기 때문이다.
- 어떤 수의 3초과 코드를 비트 반전(1의 보수)하면 그대로 9의 보수가 된다
- 3 → 0110, 비트 반전 → 1001 = 6 (= 9 − 3)
- 2 → 0101, 비트 반전 → 1010 = 7 (= 9 − 2)
- 뺄셈을 보수의 덧셈으로 처리할 때 별도의 보수 변환 회로가 필요 없다. 인버터만 붙이면 된다
- 소형 계산기에서 BCD 대신 3초과 코드를 쓴 가장 큰 이유가 이것이다
BCD(8421)에는 이 성질이 없다. 2421 코드와 51111 코드에도 자기 보수 성질이 있지만 이들은 가중치 코드다.
- 0000 과 1111 을 쓰지 않으므로 모든 비트가 0인 상태가 없다. 전송이 끊긴 것과 값 0 을 구별할 수 있다
- 인접한 값끼리 한 비트만 다른 코드
- "연속된 순간에 하나의 비트만 변화한다"는 설명은 그레이 코드의 특징이다. 3초과 코드가 아니다
- 아날로그-디지털 변환, 로터리 인코더에서 판독 오류를 줄이는 데 쓴다
- 변환 : 2진수를 오른쪽으로 한 칸 민 값과 원래 값을 XOR
