補数

またはとは、ある数 との和が基準となる数 に等しくなるような数である。すなわち、補数を とすればこれは を満たす。
 を 進法の基数の冪 とすればこれは、 進法で と表せる。従ってこの場合、非負の整数 に対する補数 は に足して 桁になる最小の整数と言える。
補数は計算機において、減算や負の数を表すためにしばしば利用される。
定義.
 を 進法で 桁の非負の整数とする。
 に対する基数の補数（）は以下のように定義される：
基数が文脈から明らかなら、単に の補数（）と呼ばれる（例えば二進法における基数の補数は2の補数と呼ばれる）。
同様に、 に対する減基数の補数（）は以下のように定義される：
基数が文脈から明らかなら、単に の補数（）と呼ばれる（例えば二進法における減基数の補数は1の補数と呼ばれる）。
呼称.
日本語において、文脈から基数が明らかでない状況で「 の補数」と言った場合、「 進法における減基数の補数」と「 進法における基数の補数」のどちらを指すか曖昧である。例えば、「9の補数」は「9進法における基数の補数」と「10進法における減基数の補数」のいずれの意味でも用いられ得る。曖昧さを取り除くためには、「基数の補数」か「減基数の補数」のいずれであるかを示したり、基数が何であるかを示す必要がある。
英語において文章上は、例えば基数の補数を と書き、減基数の補数を と書くことで区別できる。
補数の利用・応用.
繰り上がり（繰り下がり）のある計算.
補数は身近なところでも利用される。ほぼ無意識のうちに使っているが、繰り上がりのある足し算で使われる
例えば、「8 + 7 = 15] という計算を考える。まず、7 に何を足せば 10 を作れるかを考えると 3 である。8 を 5 + 3 に分解して、3 + 7 で 10 を作り、1 の位は残った 5 であるから、合わせて 15 となる。
つまり、1の位の計算で、7 を足す代わりに 7 の補数である 3 を引くことで、繰り上がりのある計算ができる。
これをきちんと数式で書くと
formula_3
である。
式の最右辺において、formula_4 は上の位への繰り上がりである。
残りの formula_5 が、formula_6 を足す代わりに、formula_6 の補数を引くことを意味する。
この計算方法は、そろばんでも同様に使われる。
つまり 7 を足すときに、繰り上がりが発生するときは、一の珠を 3つ下げる。ほかの数字でも同様。
なお、そろばんでは五珠もあるので、10 の補数のほか、5 の補数も使わなければならない。
繰り下がりのある引き算でも同様である。
補数を利用した減算.
補数を利用すると、正整数の減算を加算処理で行うことができる。
以下に、10 進 5 桁の減算 formula_8 を、補数を用いて加算処理に置き換えた例を説明する。被減数を "x"、減数を "y" とし、減算結果を formula_9 とする。
このように、本来桁借りを考慮しなければならないような減算であっても、補数の概念を利用すれば加算処理に置き換えて計算することができる。
上に挙げたのは10進法の例であるが、これは任意の基数において成り立つ。
この性質により、負整数の表記法として基数の補数を採用すると、最上位桁からの桁上がり（桁あふれ・算術オーバーフロー）を無視すれば、通常の加算処理で負整数の加算（つまり正整数の減算）が行えることになる。この利点のため、2の補数は多くのコンピュータで負整数の内部表現に採用されている。