もともと補数とは互いに補い合う数のことで、たとえば、5を基準とする3の補数は2(5-3)といようなものです。これだけならなんてことないのですが、2進数で使う補数って何かわかりにくいところがあります。2進数で出てくる補数には「1の補数」と「2の補数」があります。
まず1の補数といわれたら、0→1、1→0ということで、これは桁が増えても同じこと。1010→0101というように各桁の0と1を入れ替えるだけです。ですから1の補数なんていわず「ビット反転」といった方がはるかにわかりやすいでしょう。
さて、わかりにくいのが2の補数です。定義に従えば0→2、1→1、2→0ということですが、2進数だから2は使えないわけで、桁ごとにこれをやってもだめです。2の補数というのは、(決められた桁数で表せる最大値+1)を基準とする補数の2進数表現です。
たとえば2進4桁で1010の補数は0110です。これは24(16)の補数を2進数で表しています。一般的にn桁の場合も2nの補数というべきなんですが、それを2の補数といっているからわかりにくいのです。よく教科書に出ている計算方法は、元の数のビットを反転して、さらに1を加えるという方法です。これがなぜ2の補数になるのかもわかりにくいですね。 --- Y.O. ---