나무 숲

그레이 코드 Gray Code? 본문

Career

그레이 코드 Gray Code?

wood.forest 2017. 3. 15. 01:39

Gray code란?


자료를 표현하는 방식 중 하나.

I/O장치, A/D 변환기, 주변장치 등에서 숫자를 표현할 때 사용한다.

수의 크기가 변할 때 인접한 수 사이에 한 자리만(1bit) 변하게 만들어진 코드이다.

1비트만 변화하므로 하드웨어적인 오류가 적다.


이런 식의 그림을 가장 익숙하게 볼 수 있다. 하드 드라이브가 동작하는 방식을 통해 그레이 코드의 쓰임을 가장 간단하게 볼 수 있는 방법이라고 한다.

0 위치의 이진 표현은 0000이고, 15 위치는 1111인 것을 알 수 있다. 하드 드라이브가 동작할 때 섹션 단위로 읽는데, 만약 하드 드라이브가 어떠한 이유로 오류를 겪어, 15위치에서 0위치로 훌쩍 넘어가서 읽어버릴 때, 다시말해 모든 비트가 반전되는 것은 비트를 읽을 때 오류가 있었음을 알 수 있다..!! 이처럼 하드드라이브는 다양한 외력에 노출될 수 있고 얼마든지 이와 같은 오류가 발생할 수 있는데 그렇기에 이때 그레이코드를 사용한다.

위에서 말했듯이 그레이 코드는 1비트씩밖에 변화하지 않는다.


이진 값과 비교해보면 위 표와 같다.





그렇다면 그레이 코드 <-> 이진 코드의 변화 방법은 어떠할까??


이 과정에서는 XOR 연산을 사용하는데, 이 연산이 가아끔은 헷갈릴 수 있습니다.


제가 사용하는 방법은 두 가지입니다.

두 비트 비교했을 때 같으면 같으니까 0 (동그라미), 다르면 다르니까 1 (곱표)

또는

두 비트 비교했을 때 1의 개수를 짝수로 만들자

->두 비트가 다르면 1이 하나뿐이므로 1을 하나 더 넣자 (1), 같으면 0 0 또는 1 1 이므로 1이 짝수니까 안넣어도 된다 (0)



1. 이진 코드에서 그레이 코드로 변환

1) 이진 코드의 첫 비트는 그대로 사용한다.

2) 두 번째 비트부터 앞 비트와의 XOR한 값을 사용한다.



2. 그레이 코드에서 이진 코드로 변환

1) 그레이 코드의 첫 비트는 그대로 사용한다.

2) 두 번째 비트부터는, 이진 코드의 구해놓은 비트와 XOR연산한 값을 사용한다.






-

http://ee1g10601yjloh.blogspot.kr/2006/02/about-gray-code.html

http://www.morkalork.com/development/view/74/#.WMgRK_nyjDc  //그림, 해석

http://www.ktword.co.kr/abbr_view.php?m_temp1=3810

728x90
반응형
Comments