이번 포스팅에서는 그레이 코드에 대해 개인적인 정리를 해보고자 한다.
Gray Code ( = Reflected Binary Code)
연속된 숫자들 사이에 오직 한 비트만 바뀌는 특수한 이진 체계
특징
1. 연속된 값간에 오직 1비트 차이만 존재
ex)
이진수 : 3(011) -> 4(100) , 3비트 변경
grey code : 3(010) -> 4(110) , 1비트만 변경
변환 방식
Binary <--> Gray Code
- Binary-> Gray
- 첫 비트는 그대로
- 그 이후는 이전 비트 XOR 현재 비트 연산
ex)
- Binary 1001
- 첫 비트 1
- 2번째 1 XOR(^) 0 = 1
- 3번째 0 Xor 1 = 1
- 4번쨰 1 XOR 1 = 0
- Grey Code : 1110 (위부터)
- Gray -> Biary
- 첫비트는 그대로
- 다음은 이전 Binary 비트와 Grey 비트를 XOR
예시
3비트 Grey Code
Decimal | Binary | Gray Code |
0 | 000 | 000 |
1 | 001 | 001 |
2 | 010 | 011 |
3 | 011 | 010 |
4 | 100 | 110 |
5 | 101 | 111 |
6 | 110 | 101 |
7 | 111 | 100 |
사용 목적
1. 하드웨어 전이 오류 방지
일반 이진수에서 값이 바뀔 떄 여러 비트가 동시에 바뀔 수 있다
하드웨어는 비트가 "완전히" 바뀌기 전에 순간적으로 잘못된 상태를 가질수 있기에, 오류 발생
-> Gray Code는 오직 1비트만 바뀌므로 불완전 전이(Transitional glitch)문제를 줄일수 있음
2. ADC 중 digital 데이터 처리 또는 타이밍 민감한 시스템에서 유리
- Binary 코드에서는 값 변경 시 잘못된 중간 상태 감지 가능성이 있다 -> GRAY CODE는 안정적이고 신뢰도 높은 판별이 가능
- 병렬 데이터 처리 중 동기화 문제 발생 가능성을 낮추어 신호간 지터(Jitter)를 줄이는데 도움이 된다.
'기타' 카테고리의 다른 글
ATR과 APDU란? (0) | 2025.05.25 |
---|