쌓고 쌓다

그레이 코드(Gray Code) 본문

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 연산하여

표시해 나간다.

Comments