2の補数
[Wikipedia|▼Menu]

2の補数(にのほすう、(: two's complement)は、2 を位取り記数法の基数とした場合の基数の補数である[1][2][3][4][5][6][注 1]。すなわち、整数 x とのが基数 2 の 2n となる数 xc = 2n − x のことをいう[注 3](例:24 = 16 について、5 に対応する2の補数は 11 = 16 − 5)。

数 x とその2の補数 xc を二進法で表せば、2の補数 xc は x との和が n + 1 桁に繰り上がる最小の数といえる(例:24 = 100002 = (1111 + 1)2 について[注 2]、510 = 01012 に対応する2の補数は 1110 = 10112 = (1111 − 0101 + 1)2)。

2の補数を得る手順は、基数の補数および減基数の補数の定義から、1の補数に 1 を足す操作となる。1の補数は二進表示された数の各位の値(ビット)を 0 から 1、また 1 から 0 に置き換える操作(ビット反転)によって得られるため(例:0101 → 1010)、2の補数はしばしば元の数をビット反転して1を足したものとして定義される。

ある数の2の補数を反数と見なせば、二進法において決まった桁数を持った数をそれぞれ非負の数と負の数に対応づけられる(#負の数の表現)。 特に n 桁の二進数について 0 から 2n−1 − 1(例:n = 8 なら 0 から 127)の範囲で符号なし表現と一致させたものは2の補数表現(にのほすうひょうげん、(: two's complement representation)または2の補数表記(にのほすうひょうき、(: two's complement notation)と呼ばれる(#2の補数表現)。

2の補数表現はコンピュータの分野において、固定長符号付きの整数型固定小数点数の表現に利用されている。

また2の補数表現は加算器で減算をするために使われる。
計算例

以下に#2の補数表現における計算例を示す。
補数であることの確認

例えば、4桁の二進数 00102 (= 2) に対する2の補数は 11102 である。実際、これらを足し算は以下のようになる: 0 0 1 0 + 1 1 1 0 1 0 0 0 0 {\displaystyle {\begin{array}{lrrrrr}&&0&0&1&0\\{}+{}&&1&1&1&0\\\hline &{\cancel {1}}&0&0&0&0\end{array}}}

結果は 100002 = 24 = 16 になっており、11102 が 00102 の 100002 に対する補数になっていることが確かめられる。また5桁目以降を無視し下4桁だけ取り出せば、結果は 00002 となる。つまり、00102 にその2の補数 11102 を足すということは 0010 から 0010 自身を引くということと同じ意味を持つ。言い換えれば、 11102 は負数 −2 を表している。
引き算と補数の足し算の比較

例えば、二進数 01012 (= 5) から二進数 00112 (= 3) を引く場合、以下のように計算できる: 0 1 0 1 − 0 0 1 1 0 0 1 0 {\displaystyle {\begin{array}{lrrrrr}&&0&1&0&1\\{}-{}&&0&0&1&1\\\hline &&0&0&1&0\end{array}}}


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:51 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef