1の補数
二進数において各ビットをすべて反転させた数値。すべての桁を1にした値から値を引いたものに等しい。
From Wikipedia, the free encyclopedia
数 x とその1の補数 xc を二進法で表せば、1の補数 xc は x との和が n 桁の二進数として表せる最大の数となる数といえる(例:24 − 1 = 11112 について[注 1]、410 = 01002 の1の補数は 1110 = 10112)。
二進法において、ある数の1の補数を反数と見なせば、決まった桁数の二進数をそれぞれ非負の数と負の数に対応づけられる(#負の数の表現)。
負の数の表現
1の補数表現
#負の数の表現節の方法で反数および減法が定義されているとする。更に 0 から 2n−1 − 1 までの非負整数をそのまま通常の位取り記数法における二進表示、
に対応づければ、これらの数の補数として負の整数に対する1の補数表現が得られる。
具体例として、n = 4 桁の二進数における対応表を以下に示す:
| 対応する整数 | 二進数 | 対応する整数 | 二進数 |
|---|---|---|---|
| 0 | 00002 | 0 | 11112 |
| 1 | 00012 | −1 | 11102 |
| 2 | 00102 | −2 | 11012 |
| 3 | 00112 | −3 | 11002 |
| 4 | 01002 | −4 | 10112 |
| 5 | 01012 | −5 | 10102 |
| 6 | 01102 | −6 | 10012 |
| 7 | 01112 | −7 | 10002 |
結局、n 桁の二進数の k + 1 桁目の値を bk ∈ {0, 1} とすれば、1の補数表現は以下のように表せる:
1の補数表現における演算
1の補数で表される数は、対応する二進数表示の最上位の値 bn−1 が 0 なら負でない値を取り、1 なら正でない値を取る。
1の補数表現において、二進数をビット列とみなせば、符号の反転はビット列 x のビットを反転[注 2]することによって行える。x とそれをビット反転させた fx は常に以下を満たす:
上記より、x の1の補数は xc = fx と表せる。従って減法は、
と書き換えられる。ビット反転が反数に対応することから、0 は 000...002 と 111...112 の2つの表現方法を持つ。