정보처리기능사 실기시험에 출제된 2진수를 1의 보수와 2의 보수로 변환하는 알고리즘을 동영상 강의를 통하여 학습하여 보겠습니다.
동영상 강의는 보수 변환 기출문제 해설과 함께 보수에 대한 전반적 개념을 설명한 강의를 추가로 게재하였습니다.
또한, 정보처리기능사 실기시험에 출제된 2진수의 1의 보수, 2의 보수 변환 알고리즘 복원 기출 문제지 파일을 첨부 파일로 등록하였으니 내려받기하셔서 학습에 참고하시기 바랍니다.
[알고리즘 기출문제] 아래의 그림은 5자리의 이진수를 입력받아 1의 보수와 2의 보수로 변환하여 각 배열에 저장하는 순서도입니다. 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 [답항보기]에서 한 가지만 선택하시오. (단, 2진수는 첫 번째 자리는 배열의 가장 마지막 포인터에 입력받는다. 2진수 배열은 A(1)~A(5) 포인터로 가정한다.)
(배열 입력 예)
2진수 10111이 순서대로 입력되면 A(1)=1, A(2)=0, A(3)=1, A(4)=1, A(5)=1 순서로 배열 포인터에 기억된다.
(사용되는 변수)
A(P) : 2진수를 입력받는 배열
P : 배열 포인터
Comp1 : 1의 보수 저장 배열
Comp2 : 2의 보수 저장 배열
C : 자리 올림 수
2진수를 1의 보수와 2의 보수 변환 알고리즘 순서도2진수의 1의 보수, 2의 보수 변환 알고리즘 순서도
2진수를 1의 보수와 2의 보수 변환 알고리즘 순서도 답항보기2진수의 1의 보수, 2의 보수 변환 알고리즘 순서도 답항보기
[순서도 분석 힌트]
① 자리 올림 수 초기치를 1로 지정 : 이유는 2의 보수는 1의 보수를 구한 후 1의 보수에 1을 더한 값이므로 자리 올림 수의 초기치를 1로 설정하여 1의 보수를 구한 후 C값을 더하여 2의 보수를 구합니다.
② 2진수 한 단위의 1의 보수를 구할 때 입력받은 2진수를 1로 빼면 2진 수 한 단위에 해당하는 1의 보수가 구해집니다. 이때 파악하여 두셔야 할 내용은 P의 초기치를 0으로 두고 P를 1씩 증가시키며 배열의 포인터로 결정한다는 것입니다. 곧, Comp1(1), Comp1(2) ... Comp1(5) 순서로 1의 보수가 배열에 순차적으로 입력됩니다.
③ 2의 보수를 구하기 위해서 배열 Comp1(5)에 기억된 1의 보수에 1을 더하면 됩니다. 이 때 순서도의 흐름에서 각 배열의 포인터는 5, 4, 3, 2, 1 순서로 반복하며 2의 보수가 Comp2 배열에 입력되도록 결정하고 있는데 이러한 배열의 포인터는 1의 보수를 구할 때 P가 5까지 증가하였으므로 P를 최초의 배열 포인터로 설정한 후 1회 반복할 때마다 P를 1씩 감소시키면서 배열 포인터 P가 1일 될 때까지 반복 수행한 후 P가 0이 되면 종료합니다.
※ 주의 : 배열 포인터의 값을 P값인 5로 결정한 후 P를 1감소시킨 후 반복합니다. 그래서 P가 0일 때 종료합니다.
④ 2의 보수를 Comp2 배열에 최종 입력하기 위해 1의 보수에 자리 올림 수를 더한 값을 2로 나눈 나머지를 Comp2 배열에 입력합니다. 최초 자리 올림 수 C가 1이므로 만약 Comp1(5)에 1이 기억되어 있었다면 결과는 2이므로 이를 2로 나누면 나머지가 0이 되고 만약 0이었다면 1을 더하였을 때 결과는 1이므로 나머지는 1이 됩니다. 이 수식을 기재하는 이유는 2진수의 경우 단 단위 수치는 0과 1만 존재하기 때문입니다.
⑤ 자리 올림 수를 결정하기 위한 수식입니다. 만약 1의 보수를 기억하는 배열 Comp1에 기억된 한 자리의 2진수가 0이면 C를 곱하였을 때 결과가 0이므로 자리 올림이 발생하지 않으므로 C의 값이 0으로 결정되고 이후 C가 0이라는 것은 배열 Comp1에 1이 기억되어 있더라도 계속 C의 값은 0이 됩니다.
[보충 강의] 보수의 원칙적 이해