p.92의 플로차트 첫번째 반복문에서 정답이 i=5,1,-1인데
예를 들어, A(5)=10000과 같이 i가 1이 될 때까지 반복되는 경우에는,
두번째 반복문에서는 J=i-1(=0),1,-1이 되는데 이 때의 반복문의 처리방법은 무엇입니까?
추가적으로 0인 경우(A(5)=00000), 2의 보수는 무엇입니까?
제 생각으로는 1의 보수는 11111이고 여기에 1을 더하여 100000인 것으로 아는데
그렇다면 p.92의 플로차트로는 배열이 5개까지만 선언되어 있는데 어떻게 출력되는 거입니까?
00000으로 출력되는 거입니까? 아니면 현재의 플로차트로는 구할 수 없는 것입니까?
안녕하세요.
이 알고리즘은 2의 보수를 빠르게 구하는 방법으로 변환할 이진수의 값 중에서 첫 번째 1이 나올때까지는 이진수 값을 그대로 저장하고 1이 나온 이후 부터는 이진수 값의 보수를 저장하니다.
첫번째 반복문에서는 첫번째 1이 나올때까지 이진수를 2의 보수 배열에 그대로 저장합니다. 즉 3번 동그라미가 NO일 될 때 B(i) = A(i)가 되는 것이죠.
두번째 반복문에서는 첫번째 1이 나온 경우로 이후의 값은 1의 보수로 변환하야 2의 보수 배열에 저장합니다.
만일 10000이라면 5부터 1까지 반복문을 수행하여 i가 1일 때 첫번째 1이 찾아진 경우입니다.
이후 두 번째 반복문은 J가 i-1부터 1까지 -1씩 증가하면서 반복하는데, i가 1이므로 J의 초기값은 0이 되어 반복문을 수행하지 않고 바로 빠져나오게 됩니다.
참고로 2의 보수에서 0은 하나만 있습니다. 모든 비트가 0으로 채워진 0 하나만 존재합니다.
오늘도 즐거운 하루 되세요.
"-
*2013-04-22 09:55:41
안녕하세요.
이 알고리즘은 2의 보수를 빠르게 구하는 방법으로 변환할 이진수의 값 중에서 첫 번째 1이 나올때까지는 이진수 값을 그대로 저장하고 1이 나온 이후 부터는 이진수 값의 보수를 저장하니다.
첫번째 반복문에서는 첫번째 1이 나올때까지 이진수를 2의 보수 배열에 그대로 저장합니다. 즉 3번 동그라미가 NO일 될 때 B(i) = A(i)가 되는 것이죠.
두번째 반복문에서는 첫번째 1이 나온 경우로 이후의 값은 1의 보수로 변환하야 2의 보수 배열에 저장합니다.
만일 10000이라면 5부터 1까지 반복문을 수행하여 i가 1일 때 첫번째 1이 찾아진 경우입니다.
이후 두 번째 반복문은 J가 i-1부터 1까지 -1씩 증가하면서 반복하는데, i가 1이므로 J의 초기값은 0이 되어 반복문을 수행하지 않고 바로 빠져나오게 됩니다.
참고로 2의 보수에서 0은 하나만 있습니다. 모든 비트가 0으로 채워진 0 하나만 존재합니다.
오늘도 즐거운 하루 되세요.
"