
정답
검사합은 \(111100\) 이고, 검사합을 송신자가 수신자에게 보내는 이유는 수신자가 같은 방식으로 검사합을 계산하여 전송 과정에서 오류가 발생했는지를 검사하기 위해서이다.
출제 의도
1의 보수 덧셈을 사용한 검사합 계산 과정을 이해하고, 왜 네트워크에서 데이터와 함께 검사합(에러 검출 코드)을 전송하는지 그 목적을 설명할 수 있는지를 평가한다.
풀이 과정
주어진 2진수 메시지는 이미 6비트 단위로
$$ 100000,\; 100000,\; 000010 $$
으로 분할되어 있다.
먼저 두 개의 6비트 \(100000\) 과 \(100000\) 을 1의 보수 덧셈으로 더한다. 보통의 2진수 덧셈을 하면
$$ 100000 + 100000 = 1000000 $$
이 되어 7비트 결과가 나오는데, 1의 보수 덧셈에서는 상위 캐리 1을 잘라서 아래 6비트에 다시 더한다. 즉,
$$ \text{아랫 6비트 } 000000 + 000001 = 000001 $$
이 되어, 두 개를 더한 중간 결과는 \(000001\) 이다.
이제 여기에 나머지 6비트 \(000010\) 을 더한다.
$$ 000001 + 000010 = 000011 $$
이번에는 캐리가 발생하지 않으므로 그냥 \(000011\) 이 2단계의 최종 결과가 된다.
3단계에서는 이 결과에 대해 1의 보수를 취한다. 6비트 \(000011\) 의 각 비트를 0↔1로 뒤집으면
$$ \overline{000011} = 111100 $$
이므로, 구해야 하는 6비트 검사합은 \(111100\) 이다.
네트워크 프로토콜에서는 송신자가 이렇게 계산한 검사합을 데이터와 함께 수신자에게 보낸다. 수신자는 수신한 데이터와 함께 받은 검사합을 포함하여 동일한 방식으로 검사합을 다시 계산했을 때, 결과가 모두 1(혹은 규약된 값)이 되면 오류가 없다고 판단하고, 그렇지 않으면 전송 도중 비트 오류가 발생한 것으로 판단하여 재전송을 요구하는 등 오류를 처리할 수 있다.
따라서 검사합을 송신자가 수신자에게 전달하는 이유는, 수신자가 데이터 전송 과정에서 발생한 오류를 검출할 수 있게 하기 위함이다.
<풀이가 부정확할 수 있으니 반드시 교차검증 확인 바랍니다.>