안녕하세요. 문제 1개 질문드립니다.
<2-33 쪽 예상문제은행 25번>
Q. 산술 연산에서 overflow가 발생했을 경우 이것을 검출하는데 사용하는 논리게이트는?
A. Exclusice-or
저는 이 문제에서 오버플로우가 발생했을때 excusive-or로 어떻게 검출하는지 이해가 되지를 않습니다.
오버플로우가 발생하면 결국 자리넘김을 행하지 않습니까? 예를들어 이진법10 + 11 은 오버플로우이 발생되어서 101입니다.
이거와 exclusice-or게이트와 어떤 상관이 있는가요?
해설에서는
"산술연산에서 오버플로우가 발생할 때는 부호비트가 변경될 때이다. 따라서 오버플로우를 검철하려면 연산후 부호피트가 제대로 유지되었는지 비교해보면 알 수있다.~"
즉, 부호와 관련되어 검증을 해야하기 때문에 exclusice-or을 사용하라고 나와있습니다.
부호 변경이 없을 때에도 오버플로우는 발생하지 않습니까? 해설이 잘 이해가 되지 않습니다.
답변해주시면 감사하겠습니다.
안녕하세요.
산술연산에서 연산될 두 비트의 최상위 비트, 즉 가장 왼쪽의 비트는 부호비트로 사용됩니다.
최상위 비트에서 자리넘김이 발생한 경우 오버플로가 발생합니다.
0 11111111 +127 에서 자리올림이 발생하여 1 0000000 이 되면 부호가 0에서 1로 변경된 형태가 됩니다.
1 11111111 -127 에서 자리올림이 발생하여 0 0000000 이 되면 부호가 1에서 0으로 변경된 형태가 됩니다.
이와 같이 부호가 변경되는 경우 자리올림이 발생한 것으로 판단할 수 있으며,
이는
이전 부호와 변경 후 부호를 비교하여 같으면(즉 XOR한 결과가 0이면) 오버플로우 발생 X
이전 부호와 변경 후 부호를 비교하여 다으면(즉 XOR한 결과가 1이면) 오버플로우 발생 O
으로 판단할 수 있습니다.
문제에서 요구하는 것은 산술연산에서 오버플로우가 발생했을 때 물론 발생하지 않는 경우도 있지만 발생한 경우에 대해 이를 검출하는 용도로 사용할 수 있는 게이트가 무엇인지를 묻는 것이므로 Exclusive-OR가 답이됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-30 11:42:36
안녕하세요.
산술연산에서 연산될 두 비트의 최상위 비트, 즉 가장 왼쪽의 비트는 부호비트로 사용됩니다.
최상위 비트에서 자리넘김이 발생한 경우 오버플로가 발생합니다.
0 11111111 +127 에서 자리올림이 발생하여 1 0000000 이 되면 부호가 0에서 1로 변경된 형태가 됩니다.
1 11111111 -127 에서 자리올림이 발생하여 0 0000000 이 되면 부호가 1에서 0으로 변경된 형태가 됩니다.
이와 같이 부호가 변경되는 경우 자리올림이 발생한 것으로 판단할 수 있으며,
이는
이전 부호와 변경 후 부호를 비교하여 같으면(즉 XOR한 결과가 0이면) 오버플로우 발생 X
이전 부호와 변경 후 부호를 비교하여 다으면(즉 XOR한 결과가 1이면) 오버플로우 발생 O
으로 판단할 수 있습니다.
문제에서 요구하는 것은 산술연산에서 오버플로우가 발생했을 때 물론 발생하지 않는 경우도 있지만 발생한 경우에 대해 이를 검출하는 용도로 사용할 수 있는 게이트가 무엇인지를 묻는 것이므로 Exclusive-OR가 답이됩니다.
오늘도 즐거운 하루 되세요.