본문 바로가기

Common Knowledges

[상식사전] 그레이코드 변환

정의

2진수 : 10진수를 0과 1로 표현하는 방법

그레이 코드 : 연속되는 코드들 간에 하나의 비트만 변하며 연속되는 코드



정말 깔끔하게 정리하신 자료가 있어서 퍼왔습니다.

사실 그레이 코드를 실상에서는 쓰는 일이 거의 없다고 생각합니다.

컴퓨터나 시스템적인 내용에서 사용하는 방법입니다. 사람이 쓰기엔 상당히 불편합니다.

 

그레이코드는 연산시 가중치가 없다는 특징이 있습니다.

가중치 = 각 자리 수의 자릿값이 가지는 값.

이게 무슨 말인고 하면

 

위의 표를 기준으로 2진수는 각 자리가 8, 4, 2, 0의 가중치(자릿값)을 가집니다.

이 8! 4! 2! 등이 가중치 입니다.

 

반면에 그레이코드는 연속되는 코드가 하나의 비트 차이가 있을 뿐 자릿값(가중치)는 없습니다.

이 특징으로 인해서 연산은 힘듭니다.

5+6의 값을 내놓으라고 했을 때 쉬이 유추해낼 수 없습니다.

2진수처럼 착착 계산이 되지않기 때문이죠.

 

하지만 그레이코드 같은 비가중치 코드들은 하나의 비트차이가 있기에 데이터 전송 등 오류가 적어야하는 환경에는 유리함을 가집니다.

 

2진수가 7과 8이 확확 바뀌는 것과는 다르게 그레이 코드는 딱 1비트의 변화가 있기 때문입니다.

 

 

이번에는 변환방법입니다.



정말 설명은 이 그림만큼 깔끔하게 끝낼 수 있는 것이 없어서 퍼왔습니다.

 

1> 2진수를 그레이 코드로 변환

 - 최상위 비트는 그냥 내려온다

 - 2진수의 비트를 옆자리 비트와 비교해서 XOR의 결과를 내린다

 - 내려온 결과들을 종합하면 그레이 코드이다.

 

2> 그레이 코드를 2진수로 변환

 - 최상위 비트는 그냥 내려간다

 - 변환된 2진수와 방금 전의 그레이코드 옆자리 비트를 비교한다. 이 때 XOR 연산을 해서 내린다.

 - 적혀진 결과를 종합하면 2진수 코드이다.