2の補数表現の意味と計算方法とは…?
2の補数表現ってどういう意味…?
2進数を使うときに必ず出てくる『2の補数表現』ですが…
正直、分かりづらいですよね?
ご安心ください。
実は2の補数表現の必要性を考えれば、簡単に理解することができます。
本記事では『2の補数表現の意味と計算方法』をご紹介していますので、ぜひ参考にしてみてください!
気になるところへGO!
2の補数表現って何なの…?

2の補数表現を簡単に言うと次のようになります。
2進数でマイナスの数値を表す手段
計算機の内部では2進整数の負数は´2の補数´表現が使用されている。
2の補数の計算方法

早く2の補数の意味を説明したいのですが、きちんと理解していただけるように、先に計算方法をご紹介します。
繰り返しになりますが、2の補数表現とは『2進数でマイナスの数値を表すやり方』です。
そのため、2の補数は『0と1を組み合わせた2進数』であることが分かります。
では、この2の補数の数値はどうやって求めればいいのでしょうか?
2の補数の求め方は次の通りです。
(2進数の逆数) + 1
具体例を一緒に確認していきましょう。
ここでは8bitの2進数である0000 1111を例にしてご説明していきます。
ちなみに0000 1111を10進数で表すと15になります。
まずはこの0000 1111の逆数である『1の補数』を考えていきます。
逆数とは0なら1、1なら0と交換することです。
逆数がわかったら、あとは+1をしていきましょう。
1111 0000 + 0000 0001を計算すれば2の補数を求めることができるのです。
2の補数表現の存在意義

ここからはお待ちかねの『2の補数がマイナスの値を意味する理由』をご説明していきます。
と、その前にクイズです。
次の計算式はいくつになるでしょうか?
15 + (-15)
お分かりの通り、『15 + (-15)』の答えは『0』です。
この計算のように、10進数では『正負が異なる同じ値を足すと必ず0になる』というルールがあります。
このルールを2進数でも実現させたいのです。
ご存知の通り、2進数は『0』と『1』だけで構成される数値です。
そのため、マイナスの記号は使えません。
マイナスの値を『0』と『1』だけで表現しなければいけないのです。
2の補数がマイナスの数値であることを確認しよう

では、2の補数を使うことで『2進数で正負が異なる同じ値を足すと0になる』ことを確認していきましょう。
『0101 + 0011 = 1000』のように、2進数の計算で1+1をすると、桁が繰り上がっていくのはご存知の通りだと思います。
では、『0101』に2の補数である『1011』を足し合わせるとどうなると思いますか?
あれ?桁が足りなくなりますね…
一見、さきほどの計算式の答えは0001 0000になりそうな気がしますよね。
でも、実は違うんです。
コンピュータで取り扱える2進数の桁数は決まっているので、増えた桁の部分は無視されてしまいます。
コンピュータが取り扱える桁数が何桁であっても、2の補数は有効です。
例えば16bitの場合を見てみましょう。
0000 0000 1111 1111に2の補数である1111 1111 0000 0001を加えると、(0001) 0000 0000 0000 0000になります。
カッコの部分は桁あふれでなくなるので、計算結果が0になるのです。
まとめ

以上が2の補数表現の解説になります。
2の補数表現で2進数のマイナスの数値を表せる理由をご理解いただけたでしょうか?
コンピュータなどに使用するプログラムを書く場合、この知識は必ず必要となるので、ぜひ覚えておいてくださいね!
- 2の補数表現とは『2進数でマイナスの数値を表す方法』である
- 2の補数は『2進数の逆数 + 1』で求められる
- 2の補数を使うことで『正負が異なる同じ値を足すと0になる』というルールを2進数でも実現できる
- 2進数計算ではあふれた桁は無視されるので、元の数と2の補数を足すと0になっているように見える