符号付数値表現
0が二種類の表現を持つという問題、キャリーを戻して加算しなければならない問題は、2の補数という体系を使うことで回避できる。2の補数では、負の数は(符号なしの感覚で言うと)1の補数より1だけ大きいビットパターンで表される。
例えば、8ビットの整数では値は右表のようになる。2の補数では、ゼロ(00000000)は一種類しかない。ある値の符号を反転した値を得るには、(元の数値が正か負かに関係なく)全ビットを反転させてから 1 を足す。2の補数での加算は符号無しの数値と同じである(ただし、オーバーフローの検出方法は異なる)。右表を見ればわかるとおり、127 と −128 の加算は、符号無しの 127 と 128 を加算するのと同じである。
ある数の2の補数を簡単に得る方法は以下の通りである。