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] + " ");
}