1の補数と2の補数


なにやらこんがらがったので、1の補数と2の補数について一回まとめる。


二進数における負の値の表現方法には、次の2つがある。
1の補数と2の補数


まず、1の補数
左端の最上位ビットを符号とみなしており、全てのビットを反転させることで負の値が得られる。
4ビット表現なら次のようになる


0010: 2
1101:-2


足すと0、つまり1111になる。
1の補数は正の値をビット反転させるだけで負数を得られて便利。
しかし、このままでは0の表現が2通りあることになってしまう。
即ち、1111と0000だ。
0000が従来の0なので、それをビット反転した1111は-0とでもすべきか?
何にせよ0が2つもあるなんて無駄、そこで2の補数を用いる。


2の補数
1の補数を土台に考えると分り易い。
さっきは1111が0を示していたので、こいつを-1にしてしまおうというわけ。
これで表現できる数値の範囲が1つだけおおきくなる。


とりあえずこのくらい



参考サイトはこちら
非常に分かりやすかったです。