[Java] 자바 그레이 코드 구현,변환하기! / 그레이코드 이론 공부

2020-09-11


그레이 부호 또는 그레이 코드(gray code는 이진법 부호의 일종으로,

연속된 수가 1개의 비트만 다른 특징을 지닌다.

 

연산에는 쓰이진 않고 주로 데이터 전송, 입출력 장치,

아날로그-디지털 간 변환과 주변장치에 쓰인다.[1]


출처 : 위키피디아


 

소스코드

		Scanner scan = new Scanner(System.in);
		int [] arr = new int [5];
		//4자리의 그레이 코드를 받을 변수다
		//크기가 5인 이유는 맨앞에 숫자가
		//0이나 1이냐 판단하여,
		//0일 경우에는  그레이코드 → 이진수 변환
		//1일 경우에는  이진수 → 그레이코드 변환
		
		
		for(int i = 0; i < arr.length; i++) {
			arr[i] = scan.nextInt();
		}
		
		
		int [] Rearr = new int [4];
		//변경된 코드가 들어갈 배열
		
		Rearr[0] = arr[1];
		
		if(arr[0] == 0) {
			for(int i = 0; i < Rearr.length - 1; i++) {
				if(arr[i + 2] == Rearr[i]) {
					Rearr[i + 1] = 0;
				}else {
					Rearr[i + 1] = 1;
				}
			}
			//그레이코드에서 이진수 변환임으로 
			//그레이코드 다음수와 이진수 i번째의 수를 비교
		}else {
			for(int i = 0; i < Rearr.length - 1; i++) {
				if(arr[i + 1] == arr[i + 2]) {
					Rearr[i + 1] = 0;
				}else {
					Rearr[i + 1] = 1;
				}
			}
			//이진법에서 그레이코드 변환임으로 
			//이진수 i의 수와 다음 이진수 i + 1번째의 수를 비교
		}
		
		for(int i = 0; i < Rearr.length; i++) {
			System.out.print(Rearr[i] + " ");
		}