230쪽 순서도를 따라서 그레이코드일때는 잘 되지만
이진수 경우를 순서도 따라서 하면은 답이 이상하게 나옵니다.
예를들면 INPUT 배열에 10110 이 들어있다고 가정하면
출력값이 이진수 0100 이 출력되는 것 같습니다.
제가 잘못이해한건지...
이해하기 쉽게 설명좀 해주세요.
안녕하세요.
10110이 입력되었다면 첫 번째 비트가 1이므로 그레이코드입니다.
그러므로 0110을 이진수로 변환하는 과정이 수행됩니다.
CONT[1]에는 INPUT[2], 즉 0이 저장되어 있습니다.
⑤번에서 Yes가 되어 ⑥~⑨번을 수행합니다.
i는 1부터 3까지 1씩 증가하므로
i가 1일 때
INPUT[i+2], 즉 INPUT[3]의 값 1과 CONT[i], 즉 CONT[1]의 값 0을 비교합니다. 같지 않으므로 NO가 되어
⑨번을 수행합니다.
CONT[i+1], 즉 CONT[2]에 1을 저장합니다. CONT[1]은 0, CONT[2]는 1이 되었습니다.
i가 증가되어 2일 때
INPUT[i+2], 즉 INPUT[4]의 값 1과 CONT[i], 즉 CONT[2]의 값 1을 비교합니다. 같으므로 Yes가 되어
⑧번을 수행합니다.
CONT[i+1], 즉 CONT[3]에 0을 저장합니다. CONT[1]은 0, CONT[2]는 1, CONT[3]은 0이 되었습니다.
i가 증가되어 3일 때
INPUT[i+2], 즉 INPUT[5]의 값 0과 CONT[i], 즉 CONT[3]의 값 0을 비교합니다. 같지 않으므로 NO가 되어
⑨번을 수행합니다.
CONT[i+1], 즉 CONT[4]에 1을 저장합니다. CONT[1]은 0, CONT[2]는 1, CONT[3]은 0, CONT[4]는 1이 되었습니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-30 10:20:21
안녕하세요.
10110이 입력되었다면 첫 번째 비트가 1이므로 그레이코드입니다.
그러므로 0110을 이진수로 변환하는 과정이 수행됩니다.
CONT[1]에는 INPUT[2], 즉 0이 저장되어 있습니다.
⑤번에서 Yes가 되어 ⑥~⑨번을 수행합니다.
i는 1부터 3까지 1씩 증가하므로
i가 1일 때
INPUT[i+2], 즉 INPUT[3]의 값 1과 CONT[i], 즉 CONT[1]의 값 0을 비교합니다. 같지 않으므로 NO가 되어
⑨번을 수행합니다.
CONT[i+1], 즉 CONT[2]에 1을 저장합니다. CONT[1]은 0, CONT[2]는 1이 되었습니다.
i가 증가되어 2일 때
INPUT[i+2], 즉 INPUT[4]의 값 1과 CONT[i], 즉 CONT[2]의 값 1을 비교합니다. 같으므로 Yes가 되어
⑧번을 수행합니다.
CONT[i+1], 즉 CONT[3]에 0을 저장합니다. CONT[1]은 0, CONT[2]는 1, CONT[3]은 0이 되었습니다.
i가 증가되어 3일 때
INPUT[i+2], 즉 INPUT[5]의 값 0과 CONT[i], 즉 CONT[3]의 값 0을 비교합니다. 같지 않으므로 NO가 되어
⑨번을 수행합니다.
CONT[i+1], 즉 CONT[4]에 1을 저장합니다. CONT[1]은 0, CONT[2]는 1, CONT[3]은 0, CONT[4]는 1이 되었습니다.
오늘도 즐거운 하루 되세요.