2の補数について

2の補数で「ビットを反転させて」のくだりでいつも躓いてたので調べてみるとこんなものを発見。
なるほど、そうだったのね。納得いきました。

・『A』の2進表現と『Aの2の補数』の2進表現を加算すると、計算結果は2のn乗になる。(nはAのビット数)
例)

A  →   01011100
Aの2の補数 →10100100
加算   = 100000000


・Aの2の補数は、Aの1の補数に1を足した値となります。
・1の補数はビット反転で計算できる
・2の補数は「ビット反転+1」で計算できる。「2のn乗にするために補う数」なので、「2の補数」と呼ばれます。


参考元:http://d.hatena.ne.jp/simply-k/20100824/1282743815

1の補数と2の補数
1の補数
2の補数を理解する準備として、1の補数について説明します。ある数Aに対する1の補数とは、次のような条件を満たす数のことです。「『A』の2進表現と『Aの1の補数』の2進表現を加算すると、計算結果の全てのビットが1になる。」

例えば、Aの2進表現(8ビット)が01011100だった場合、Aの1の補数の2進表現は、10100011となります。(01011100 + 10100011 = 11111111) 例を見ればすぐにわかるように、Aの1の補数は、Aの2進表現をビット反転させたものになります。「オール1にするために補う数」なので、「1の補数」と呼ばれます。

2の補数
ある数Aに対する2の補数とは、次のような条件を満たす数のことです。「『A』の2進表現と『Aの2の補数』の2進表現を加算すると、計算結果は2nになる。(nはAのビット数)」

例えば、Aの2進表現(8ビット)が01011100だった場合、Aの2の補数の2進表現は、10100100となります。(01011100 + 10100100 = 100000000 = 28) 定義からすぐにわかるように、Aの2の補数は、Aの1の補数に1を足した値となります。1の補数はビット反転で計算できるため、2の補数は「ビット反転+1」で計算できることになります。「2nにするために補う数」なので、「2の補数」と呼ばれます。