補数とは?2進数の負の表し方などわかりやすく解説!

【PR】このページには広告が含まれることがあります。

前回では2進数についてやその変換を解説しました。

今回は2進数で負の数字の表現方法を解説したいと思います!

2進数で0以下の数字はどう表現するんだろう。

目次

引き算は足し算する!

2進数同士での足し算は簡単です。10進数の時と同じように一桁目同士を足し、繰り上がり(2進数なので1+1で繰り上がります)をして二桁目にいく、という感じです。
では引き算はどうでしょうか。これもまた10進数と同じように桁下がりを利用すればできます。

(110)2-(11)2=(11)2

しかしなんとコンピューターには引き算の概念がありません!これはどうすべきでしょうか…。

そこで引き算ではなく、足し算で引き算を実現させようということになりました!

8−5は8+(−5)と同じですよね?こういうことです!
つまり負の表現ができれば引き算を実現することができるのです。

補数とは

負の表現に補数というものがあります。
補数とはその名の通り「補う数」という意味です。補数には2種類あります。

その桁の最大を取るために補う数

10進数で言うと全ての桁の値が9になるように補う数のことです。200は足すと999になる数がこの場合の補数になるので、799になります。
10進数の場合、全ての桁が9になるのでこの補数表現を9の補数と言います!

そして2進数の場合でも同じです!全ての桁が最大値、つまり1になるように補う数になります。これを1の補数と言います!
(110)2の場合は1を足すと(111)2になるため、1が(110)2の1の補数となります。

次の桁に繰り上がるためのに補う補数

ちょうど繰り上がる最大の桁が1、他は0になるために補う数です。10進数の場合は10の補数、2進数の場合は2の補数と言います!

10進数のケースで、20の10の補数を考えてみましょう。20が桁上りするのは100です。つまり20が100になるために必要な数は80になります。なので20の10の補数は80になります!

2進数でも考え方は同じです。(110)2の2の補数を考える場合、足して(1000)2になる数が補数になります。なので(110)2の2の補数は10になります!

コンピューターの世界では、主にこの2の補数が使われます!

2の補数の求め方は簡単!

でもいちいち引き算したり計算が面倒…だと感じるかもしれませんが2の補数の求め方はとっても簡単です!

まず全ての桁の数を反転します。1なら0、0なら1にします。

110 → 001

そして1を足してあげます。

001 + 001 = 010

これが2の補数になります!110の場合、反転すると001、そこに1を足すと10になります。簡単でしょう?

2の補数を使えば負の値の表現になるの?

そうだよ、実際は1バイトで考えるから(00000110)2の負の表現は(11111010)2になるんだ!

2進数の負の計算は2の補数で!

ここまできたら簡単です!負の数は2の補数で計算してあげれば、引き算も実現可能です。

たとえば(10)2−(10)2は(10)2+(−(10)2)となるため、1バイト(8ビット、つまり8桁)で考えた場合

00000010 + 11111110 = 100000000 (※はみ出た9桁目は無視します!)

こう表現できます。2の補数は補数を足すと桁上りするのですが、桁上りした1を無視すれば0になります。このようにすることで差分が表現できるので、2の補数で引き算が実現できるんですね。
このように2の補数の計算でははみ出て繰り上がった数は無視するので、そこだけ注意してください!

大事なのは2の補数の求め方と計算方法!

いかがでしたか?説明が長くなってしまいましたが、資格試験などで必要になる知識は主に2点です!

  1. 反転して1を足すこと。
  2. 計算して繰り上がったらその桁は無視すること。

ここをしっかりと覚えておきましょう!

補数の導き出し方がわかれば簡単だね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次