1の補数の加算 / 非公式訳

pp.128-129

非公式訳:
1の補数表現の利点の1つは、正の数の全ビットを反転するだけで負の数が得られることです。図3.8に、2つの数を加算するときのプロセスを示します。正負符号の組み合わせとして考えられる4通りすべてについて検討します。図の上半分に示したように、5+2=7と(-5)+2=(-3)は単純です。2つの演算数を加算すれば正しい答が得られます。それ以外の2つの例は状況が異なります。5+(-2)=3の計算からは10010というビット列が生成されます。ここでは4ビット値であることを前提にしているので、符号ビットの位置からキャリーアウトが発生しています。また、計算結果である4ビット値を見ると、3ではなく2になっていて、これは間違いです。面白いことに、符号ビット位置から発生したキャリーアウトを、計算結果の最下位ビットに加算すると、正しい答である3が得られます。この修正処理は図に赤で示してあります。(-5)+(-2)=(-7)を計算するときも同じことが起きます。最初の加算結果は4ビットだけ見ると0111であり、間違いです。0111は-7ではなく+7であるからです。しかしここにもやはり、符号ビット位置から発生したキャリーアウトがあります。図3.8に示したように、このキャリーアウトを最下位ビット位置に加算すれば計算結果が修正できます。

4つ示した計算例から分かるように、1の補数の加算は単純なこともあれば単純ではないこともあります。場合によっては修正が必要であり、そうなると余分な加算が必要になります。結局、2つの1の補数を加算するのに必要な時間は、2つの符号なし数値を加算するのに必要な時間の倍かかることがあります