본문 바로가기

프로그래밍/시스템

[C-알고리즘] 그레이 코드

반응형

 

이진수를 그레이 코드로 변환하는 방법


 

이진수

 1  0  1  0

  

 ↓↓↓ 

 

 

그레이코드

 

 1  1  1  1

 

첫 번째 그레이비트는 첫 번째 이 진수 비트를 그대로 내려쓴다. 

 

두 번째 그레이 비트는 두 번째 이진수 비트와 그 왼쪽에 비트를 XOR 연산한다. [ 1 ⊕ 0 ]

 

세 번째 그레이 비트는 세 번째 이진수 비트와 그 왼쪽에 비트를 XOR 연산한다. [ 0  1 ]

 

네 번째 그레이 비트는 네 번째 이진수 비트와 그 왼쪽에 비트를 XOR 연산한다. [ 1  0 ]

 

 

 

 

그레이 코드를 이진수로 변환하는 방법

 

 


그레이코드

 1  1  1  1

 

 

 

 ↓↓↓

 

이진수

 1  0  1  0

 



첫 번째 이진수 비트는 첫 번째 그레이 비트를 그대로 내려쓴다. 

 

두 번째 이진수 비트는 첫 번째 이진수 비트와 두 번째 그레이 비트를 XOR 연산한다. [1 ⊕ 1]

 

세 번째 이진수 비트는 두 번째 이진수 비트와 세 번째 그레이 비트를 XOR 연산한다. [1 ⊕ 0]

 

네 번째 이진수 비트는 세 번째 이진수 비트와 네 번째 그레이 비트를 XOR 연산한다. [1 ⊕ 1]

 

 


 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
 
 
int main()
{
     int binary[4= {1,0,1,0};
     int graycode[4= {binary[0] , };
         
    int i;
 
    // ------이진수를 그레이 코드로 변환-----------     
    for(i=0; i<3; i++) {        
        if ( binary[i] == binary[i+1] ) graycode[i+1= 0;
        else graycode[i+1= 1;
    }
    
    
    // ------그레이 코드를 이진수로 변환-----------     
    binary[0= graycode[0];
    
    for(i=0; i<3; i++) {
        if ( graycode[i+1== binary[i] ) binary[i+1= 0;
        else binary[i+1= 1;
    }
 
    // ------ 출력 -----------
     for(i=0; i<4; i++printf("%d",binary[i]);
     printf("(이진수) --> 그레이 코드 : "); for(i=0; i<4; i++printf("%d",graycode[i]);puts("");
     for(i=0; i<4; i++printf("%d",graycode[i]);
    printf("(그레이 코드) --> 이진수 : "); for(i=0; i<4; i++printf("%d",binary[i]);
}
cs

 

 

반응형

'프로그래밍 > 시스템' 카테고리의 다른 글

[C] _beginthreadex  (0) 2017.08.19
C언어 연산 우선순위  (0) 2017.07.26
[C-알고리즘] 이분검색  (0) 2017.07.19
[C] 술래잡기 게임  (0) 2017.07.14
[C] atoi - itoa (문자열을 정수로 , 정수를 문자열로 변환)  (0) 2017.07.05