2의 보수(2's Complement) 체계란?
2의 보수 체계는 현대 컴퓨터 아키텍처에서 가장 널리 채택되고 있는 정수 표현 방식입니다. N비트 2의 보수 체계는 -2n-1부터 2n-1-1까지의 숫자를 표현할 수 있습니다.
4비트: -8부터 7까지 표현 가능
5비트: -16부터 15까지 표현 가능
오버플로는 언제 발생하는가?
오버플로(Overflow)는 N비트 2의 보수 두 수를 더했을 때, 그 결과가 해당 N비트 범위에 담을 수 없을 만큼 커지는 상황에서 발생합니다.
컴퓨터 내부에는 N비트 고정 크기의 레지스터가 있으며, 두 개의 N비트 수를 더하면 결과는 최대 N+1비트가 될 수 있습니다. 이때 여분의 비트는 캐리 플래그(Carry Flag)에 저장됩니다. 그러나 중요한 점은, 캐리가 발생했다고 해서 반드시 오버플로가 일어난 것은 아니라는 사실입니다.
오버플로 감지 방법
덧셈 연산에서 오버플로는 다음 두 가지 경우에 발생합니다.
두 양수를 더한 결과가 음수가 되는 경우
두 음수를 더한 결과가 양수가 되는 경우
따라서 두 피연산자와 결과의 최상위 비트(MSB, Most Significant Bit)를 검사하면 오버플로 여부를 판별할 수 있습니다. 하지만 3비트 비교기를 구현하는 대신, MSB 단계에서의 캐리 인(Carry-in)과 캐리 아웃(Carry-out)만 확인하는 2비트 비교기 방식으로도 오버플로를 감지할 수 있습니다. 이어지는 분석은 N비트 2의 보수 덧셈을 기준으로 설명합니다.

캐리 인과 캐리 아웃을 이용한 분석
오버플로는 캐리 인과 캐리 아웃이 서로 다를 때 발생합니다. 아래 그림을 통해 이 식이 성립하는 이유를 살펴보겠습니다.

첫 번째 경우: 두 수의 MSB가 모두 0이므로 두 수는 양수입니다. 이때 캐리 인이 1이라면 결과의 MSB가 1이 되어 결과가 음수로 나타나며(오버플로), 캐리 아웃은 0이 됩니다. 캐리 인과 캐리 아웃이 다르므로 오버플로가 발생한 것입니다.
두 번째 경우: 두 수의 MSB가 모두 1이므로 두 수는 음수입니다. 이때 캐리 인이 0이라면 결과의 MSB가 0이 되어 결과가 양수로 나타나며(오버플로), 캐리 아웃은 1이 됩니다. 역시 캐리 인과 캐리 아웃이 다르므로 오버플로가 발생한 것입니다.
결국 MSB 위치에서의 캐리 인과 캐리 아웃만 비교해도 오버플로를 충분히 감지할 수 있습니다.
XOR 게이트를 활용한 오버플로 감지 회로

위와 같이 XOR 게이트 하나만으로도 오버플로를 손쉽게 감지할 수 있습니다. MSB의 캐리 인과 캐리 아웃을 XOR 게이트의 입력으로 넣으면, 두 값이 다를 때 출력이 1이 되어 오버플로 발생을 즉시 알려줍니다. 이 방식은 하드웨어 구현이 간단하고 효율적이기 때문에 실제 ALU(산술 논리 장치) 설계에서도 널리 활용됩니다.