2의 보수 번호 시스템은 컴퓨터 아키텍처에서 널리 구현됩니다.
N-bit 2의 보수 수 시스템은 -2n-1에서 2n-1- 1까지의 수를 나타낼 수 있습니다.
4 비트는 ( -8 에서 7 ) 사이의 숫자를 나타낼 수 있습니다.
5비트는 2의 보수 시스템에서 (-16에서 15까지) 숫자를 나타낼 수 있습니다.
2개의 N비트 2의 보수가 추가되고 답이 N비트 그룹에 맞지 않을 때 덧셈과 관련하여 오버플로가 발생합니다.
컴퓨터에는 N-비트 고정 레지스터가 포함되어 있습니다. 2개의 N-Bit Number를 더한 결과는 최대 N+1 Bit 수가 됩니다.
캐리 플래그는 추가 비트를 저장합니다. 하지만 캐리가 항상 오버플로를 지정하는 것은 아닙니다.
오버플로 감지
오버플로가 발생하는 경우 -
-
두 개의 음수를 더한 결과는 양수 또는
-
두 개의 음수를 더한 결과는 음수입니다.
따라서 두 피연산자의 MSB(Most Significant Bit) 및 결과를 확인하여 오버플로를 감지할 수 있습니다. 그러나 3비트 비교기 오버플로를 구현하는 대신 MSB에서 Carry-in 및 Carry-Out을 확인하는 것만으로 2 Bit Comparator를 구현하여 감지할 수도 있습니다. 2의 보수 수에 N-Bit 추가를 고려합니다.
캐리인이 캐리아웃과 같지 않을 때 오버플로가 발생합니다. 오버플로에 대한 위의 표현은 아래 분석에서 논의할 수 있습니다.
첫 번째 그림의 경우 두 숫자의 MSB는 양수임을 나타내는 0입니다. 여기에서 Carry-in이 1이면 결과의 MSB를 1로 표시하여 결과가 음수(Overflow)이고 Carry-out이 0임을 나타냅니다. Carry-in은 Carry-out과 같지 않으므로 overflow입니다.
두 번째 그림의 경우 두 숫자의 MSB는 1이며 음수임을 나타냅니다. 여기에서 Carry-in이 0이면 결과 MSB가 0으로 결과가 양수(Overflow)이고 Carry-out이 1임을 나타냅니다. Carry-in은 Carry-out과 같지 않으므로 overflow입니다.
따라서 MSB의 Carry-in 및 Carry-out은 Overflow를 감지하기에 충분합니다.
오버플로 감지를 위해 XOR Gate 위를 구현할 수 있습니다.