반응형
이진수를 그레이 코드로 변환하는 방법
이진수
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 |