티스토리 뷰

정보처리기사 2과목 전자계산기 구조에 나오는 중요 개념 정리로 이번 포스팅에서는

2진수를 그레이 코드(Gray Code)로 변환하는 방법과

그레이 코드를 2진수로 변환하는 방법에 대해 알아보려고 합니다.

그전에 그레이 코드에 대해 자세히 알아보도록 하겠습니다.

그레이 코드는 하나의 숫자에서 다음 숫자로 변할 때 오직 한 자리만 변화하여 새로운 코드를 구성하는 코드입니다.

즉 인접한 다음 숫자를 표현할 때 1비트만 변화하여 숫자 진행을 하는 코드입니다. 

그레이 코드는 2진수 표기법으로 만든 코드 중 하나이며, 최소한의 비트 변화에 따라 숫자를 구별하는 코드입니다.

이러한 특징을 가진 그레이 코드는 아날로그-디지털 상호 변환 장치나 입·출력장치에 주로 사용되는 코드입니다.

또한 그레이 코드는 가중치가 없는 비가중률 코드(Unweighted code)로 연산에는 사용할 수 없고,

단지 최소한의 비트수의 차이를 이용하여 인접한 두 수의 구별을 가능하게 할 뿐입니다.

먼저 2진수를 그레이 코드로 변환하는 방법에 대해 설명하겠습니다.

우선 2진수 첫 번째 자리의 비트를 그대로 쓰는 것으로 시작합니다.

즉 2진수인 1100을 예를 들어 설명하자면, 그레이 코드의 첫 번째 비트는 2진수의 첫 번째 자리 수인 1을 그대로 내려쓴 1이 됩니다.

그다음부터는 2진수의 다음 번째 자리의 비트와 같은지 다른지를 비교하여 같으면 0을 도출하고 다르면 1을 도출하여 그레이 코드에 넣어주는 작업을 계속합니다.

즉 이 작업은 XOR 연산을 한것과 같은 작업을 한 것이라고 생각하면 이해하기 쉽습니다.

1100의 예에서 첫 번째 자리와 두 번째 자리의 비트는 1로 동일하므로, 그레이 코드의 두 번째 자리의 수는 0이 됩니다.

두 번째 자리와 세 번째 자리는 1과 0으로 다르므로 그레이 코드 세 번째 자리의 수는 1입니다.

마지막 네 번째 자리 수는 2진수 세 번째 자리와 네 번째 자리가 0과 0으로 같으므로 0으로 결정됩니다.

최종적으로 2진수 1100은 그레이 코드 1010으로 변환됩니다.

반대로 그레이 코드를 2진수로 변환하는 방법에 대해서도 알아보겠습니다.

XOR 연산을 하는 원리는 동일하지만 약간 차이가 있습니다.

그레이 코드 1100을 가정하여 설명하겠습니다.

2진수의 첫 번째 자리의 비트는 그레이 코드 첫 번째 자리를 그대로 가져와 사용합니다.

따라서 2진수 첫 번째 자리는 1로 결정됩니다.

그 다음그다음 작업부터는 2진수로 도출된 숫자와 그다음 번째의 그레이 코드 숫자를 XOR 연산하여 도출합니다. 

즉 첫 번째 2진수로 결정된 1과 그레이 코드의 두 번째 비트인 1을 XOR 연산하면 1과 1로 동일하므로 2진수 두 번째 자리의 숫자는 0으로 결정됩니다.

같은 작업을 계속하면, 2진수 두 번째 자리의 0과 그레이 코드 세 번째 자리의 0이 동일하므로 2진수 세 번째 자리는 0이 됩니다.

마지막으로 2진수 세 번째 자리 0과 그레이 코드 네 번째 자리 0이 동일하므로 2진수 네 번째 자리는 0으로 결정됩니다. 최종적으로 그레이 코드 1100을 2진수로 변환하면 1000이 됩니다.

그레이 코드와 2진수의 변환 문제는 다른 문제에 비해 상대적으로 간단한 원리만 알면 풀 수 있으므로 꼭 이해하여 정보처리기사 필기에 대한 대비를 하시면 좋을 것 같습니다.

필기에 어떤 문제가 나올 지 모르지만 간단한 원리만 기억하면 한 문제를 확실히 맞힐 수 있다는 점을 주목하고 그레이 코드 관련 문제를 공부하시기 바랍니다.

감사합니다.:)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday