算術オーバーフロー / 非公式訳

p.137

非公式訳:
算術オーバーフローを検出するのには別の方法があります。もっと直観的な方法です。オーバーフローが生じるのは、加数の符号が両方とも同じであるのにその符号と加算結果の符号とが異なっている場合です。X=X3X2X1X0、Y=Y3Y2Y1Y0が4ビットの2の補数を表すとします。そしてS=S3S2S1S0がその加算結果であるとします。オーバーフローは下の論理式で表現できます。

オーバーフロー=X3Y3!S3 OR !X3!Y3S3

キャリーアウト信号およびオーバーフロー信号を見れば、加算結果の表現に利用できるビット数に収まりきらないほど加算結果が大きいかどうかが分かります。キャリーアウトが意味を持つのは符号なし数値が絡むときだけであり、オーバーフローが意味を持つのは符号つき数値の場合だけです。一般的なコンピューターは、うまいこと同じ加算回路を使って、符号なしと符号つきと両方のオペランドを処理します。そのため、必要な回路の量が少なくて済みます。つまり、ここまで説明したとおり、キャリーアウト信号とオーバーフロー信号は両方とも生成したほうがよいということです。そうすれば、符号なしオペランドを扱うプログラム命令はキャリーアウト信号が使用でき、符号つきオペランドを扱う命令はオーバーフロー信号が使用できます。