1の補数
テンプレート:出典の明記 テンプレート:読み仮名は、テンプレート:Math を位取り記数法の基数とした場合の減基数の補数であるテンプレート:Sfnテンプレート:Sfnテンプレート:Sfnテンプレート:Sfnテンプレート:Sfnテンプレート:Sfn。すなわち、整数 テンプレート:Mvar との和が テンプレート:Math の冪乗 テンプレート:Math から テンプレート:Math を引いた数に等しい数 テンプレート:Math のことをいう(例:テンプレート:Math について、テンプレート:Math に対する1の補数は テンプレート:Math)。
数 テンプレート:Mvar とその1の補数 テンプレート:Math を二進法で表せば、1の補数 テンプレート:Math は テンプレート:Mvar との和が テンプレート:Mvar 桁の二進数として表せる最大の数となる数といえる(例:テンプレート:Math についてテンプレート:Efn2、テンプレート:Math の1の補数は テンプレート:Math)。
二進法において、ある数の1の補数を反数と見なせば、決まった桁数の二進数をそれぞれ非負の数と負の数に対応づけられる(#負の数の表現)。
1の補数表現はコンピュータの分野において、固定長の符号付きの整数型などの表現として利用されることがある。
負の数の表現
1の補数を用いて二進数を負の整数に対応づけられる。1の補数の定義より、テンプレート:Mvar 桁の二進数 テンプレート:Mvar とその補数 テンプレート:Math は以下の関係を満たす:
右辺の テンプレート:Math の倍数を テンプレート:Math と同一視すれば、上記の関係は以下のように解釈できる:
これは テンプレート:Mvar の補数 テンプレート:Math を テンプレート:Mvar の反数 テンプレート:Math と見なすことを意味する。
1の補数表現
#負の数の表現節の方法で反数および減法が定義されているとする。更に テンプレート:Math から テンプレート:Math までの非負整数をそのまま通常の位取り記数法における二進表示、
に対応づければ、これらの数の補数として負の整数に対する1の補数表現が得られる。
具体例として、テンプレート:Math 桁の二進数における対応表を以下に示す:
結局、テンプレート:Mvar 桁の二進数の テンプレート:Math 桁目の値を テンプレート:Math とすれば、1の補数表現は以下のように表せる:
1の補数表現における演算
1の補数で表される数は、対応する二進数表示の最上位の値 テンプレート:Math が テンプレート:Math なら負でない値を取り、テンプレート:Math なら正でない値を取る。
1の補数表現において、二進数をビット列とみなせば、符号の反転はビット列 テンプレート:Mvar のビットを反転テンプレート:Efn2することによって行える。テンプレート:Mvar とそれをビット反転させた テンプレート:Math は常に以下を満たす:
上記より、テンプレート:Mvar の1の補数は テンプレート:Math と表せる。従って減法は、
と書き換えられる。ビット反転が反数に対応することから、テンプレート:Math は テンプレート:Math と テンプレート:Math の2つの表現方法を持つ。