Git & CS
그레이 코드(Gray Code)
승민아
2022. 9. 21. 20:51
그레이 코드(Gray Code)
- 가중치가 없어 연산에는 부적합
- 아날로그-디지털 변환기나 입출력 장치 코드로 주로 쓰임
- 연속되는 코드들 간에 한 비트만 변환하면 새로운 코드가 된다. -> 오차가 작아짐
오차가 작다?
그레이 코드 0111을 기준으로 직전 코드 0110과 다음 코드 0101과 한 비트씩만 다른 것이 보임
10진 코드 | 2진 코드 | 그레이 코드 |
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 | 1111 |
하지만 2진 코드에서는 비트가 여러개가 바뀌기에 약간의 오차도 큰 수의 차이가 발생한다.
2진 코드-> 그레이 코드 변환
최상위비트(MSB)는 그대로 내려오고
그다음 그레이 비트부터는 이전의 2진코드의 비트와 현재 위치의 2진코드의 비트를 XOR 연산하여 표시.
XOR 연산: 같으면 0, 다르면 1
그레이 코드 -> 2진 코드 변환
그레이 코드의 MSB는 그대로 내려와 쓰고
그 다음부터는 앞의 2진 코드 비트와 현재 위치의 그레이 코드 비트를 XOR 연산하여
표시해 나간다.