4번답에서 input(j+2)로 하면 로직에러 아니가요.
비교판단문에서 INPUT(J+2)=GRAY(J)로 물어봐야 에러가 안될꺼 같은데요?
입력자료가 01101로 이진수로 들어왔을때 그레이코드로 시뮬을 해보세요..
안녕하세요.
01101이 들어왔다고 가정하고 설명드리겠습니다.
첫번째 비트가 0이므로 입력된 값은 2진수입니다. 그러므로 그레이코드 변환을 시작합니다.
먼저 2진수를 그레이코드로 변환하는 과정입니다(108쪽 예시 참조).
1. 2진수 첫 비트를 그레이코드 첫번째 비트에 그대로 저장
2. 2진수 첫 번째 비트와 두 번째 비트를 비교하여 같으면 0, 다르면 1을 그레이코드 두 번째 비트로 저장
3. 2진수 두 번째 비트와 세 번째 비트를 비교하여 같으면 0, 다르면 1을 그레이코드 두 번째 비트로 저장
4. 2진수 세 번째 비트와 네 번째 비트를 비교하여 같으면 0, 다르면 1을 그레이코드 두 번째 비트로 저장
순서도에서 오른쪽 반복문으로 이동한 뒤 부터 설명하겠습니다.
GRAY(1) = INPUT(2) -> 입력된 두번째 비트, 즉 실질적인 데이터의 첫 비트를 그대로 변활될 그레이코드 첫 비트로 저장합니다.
INPUT(1)은 그레이인지 2진수인지 판단하는 비트이므로 실질적인 데이터의 첫 비트는 INPUT(2)입니다.
(위 변환 과정 중 1번 과정)
첫 번째 그레이코드는 1
J가 1인 상태로 반복문을 진입하여
2진수의 첫 번째 비트와 두 번째 비트를 비교합니다.
INPUT(J+1) = INPUT(J+2). 즉 INPUT(2) = INPUT(3)을 비교하는 것이죠. 두 비트가 모두 1이므로 결과는 0입니다.
(위 변환 과정 중 2번 과정)
두 번째 그레이코드는 0
J가 2인 상태로 반복문을 다시 실행하여
같은 방법으로 두 번째와 세 번째 비트를 비교합니다.
INPUT(J+1) = INPUT(J+2). 즉 INPUT(3) = INPUT(4)를 비교하는 것이죠. 두 비트가 1과 0으로 서로 다르므로 결과는 1입니다.
(위 변환 과정 중 3번 과정)
세 번째 그레이코드는 1
J가 3인 상태로 반복문을 다시 실행하여
같은 방법으로 세 번째와 네 번째 비트를 비교합니다.
INPUT(J+1) = INPUT(J+2). 즉 INPUT(4) = INPUT(5)를 비교하는 것이죠. 두 비트가 0과 1로 서로 다르므로 결과는 1입니다.
(위 변환 과정 중 4번 과정)
세 번째 그레이코드는 1
반복문을 빠져나와 변환된 그레이코드를 앞에서부터 순서대로 출력합니다.
결과는 1011
위 내용을 참고하여 다시한번 디버깅을 수행해 보세요.
오늘도 즐거운 하루 되세요.
"-
*2013-01-18 09:29:39
안녕하세요.
01101이 들어왔다고 가정하고 설명드리겠습니다.
첫번째 비트가 0이므로 입력된 값은 2진수입니다. 그러므로 그레이코드 변환을 시작합니다.
먼저 2진수를 그레이코드로 변환하는 과정입니다(108쪽 예시 참조).
1. 2진수 첫 비트를 그레이코드 첫번째 비트에 그대로 저장
2. 2진수 첫 번째 비트와 두 번째 비트를 비교하여 같으면 0, 다르면 1을 그레이코드 두 번째 비트로 저장
3. 2진수 두 번째 비트와 세 번째 비트를 비교하여 같으면 0, 다르면 1을 그레이코드 두 번째 비트로 저장
4. 2진수 세 번째 비트와 네 번째 비트를 비교하여 같으면 0, 다르면 1을 그레이코드 두 번째 비트로 저장
순서도에서 오른쪽 반복문으로 이동한 뒤 부터 설명하겠습니다.
GRAY(1) = INPUT(2) -> 입력된 두번째 비트, 즉 실질적인 데이터의 첫 비트를 그대로 변활될 그레이코드 첫 비트로 저장합니다.
INPUT(1)은 그레이인지 2진수인지 판단하는 비트이므로 실질적인 데이터의 첫 비트는 INPUT(2)입니다.
(위 변환 과정 중 1번 과정)
첫 번째 그레이코드는 1
J가 1인 상태로 반복문을 진입하여
2진수의 첫 번째 비트와 두 번째 비트를 비교합니다.
INPUT(J+1) = INPUT(J+2). 즉 INPUT(2) = INPUT(3)을 비교하는 것이죠. 두 비트가 모두 1이므로 결과는 0입니다.
(위 변환 과정 중 2번 과정)
두 번째 그레이코드는 0
J가 2인 상태로 반복문을 다시 실행하여
같은 방법으로 두 번째와 세 번째 비트를 비교합니다.
INPUT(J+1) = INPUT(J+2). 즉 INPUT(3) = INPUT(4)를 비교하는 것이죠. 두 비트가 1과 0으로 서로 다르므로 결과는 1입니다.
(위 변환 과정 중 3번 과정)
세 번째 그레이코드는 1
J가 3인 상태로 반복문을 다시 실행하여
같은 방법으로 세 번째와 네 번째 비트를 비교합니다.
INPUT(J+1) = INPUT(J+2). 즉 INPUT(4) = INPUT(5)를 비교하는 것이죠. 두 비트가 0과 1로 서로 다르므로 결과는 1입니다.
(위 변환 과정 중 4번 과정)
세 번째 그레이코드는 1
반복문을 빠져나와 변환된 그레이코드를 앞에서부터 순서대로 출력합니다.
결과는 1011
위 내용을 참고하여 다시한번 디버깅을 수행해 보세요.
오늘도 즐거운 하루 되세요.
"