나무 숲
그레이 코드 Gray Code? 본문
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
'Career' 카테고리의 다른 글
[인물] 다익스트라 Dijkstra (1) | 2017.03.19 |
---|---|
Big endian, Little endian 에 대해 (0) | 2017.03.18 |
시스템에서 코드의 오류를 검사하는 방법들 (0) | 2017.02.27 |
ROM (Read Only Memory)에 대해 (0) | 2017.02.26 |
래치, 플립플롭 (Latch, Flip-Flop) (0) | 2017.02.23 |