Q. 2進数のひき算をする方法は?
A. 5 - 2 = 3 を、5 + (-2) = 3 のように、マイナスの数を使って、ひき算をたし算に書きかえることで実現します。
2進数で「マイナスの数」を表す
前回の記事で、2進数のたし算をする方法を学習しました。
今回は2進数のひき算についてです。
ひき算は直接計算してもいいですが、とくにコンピュータで計算する場合などは、
ひき算をたし算に直してから計算します。
その方が、コンピュータにとって計算しやすいからです。
ひき算はたし算とは違うもののように思えますが、中学校で習う「負の数(マイナスの数)」を利用すれば、たし算に直すことができます。
「負の数」というのは、-1. -2. -3, ... のように、マイナスがついた数のことです。
例えば、5 - 2 というひき算は、負の数を使って 5 + (-2) というように、たし算の形であらわすこともできますよね?これが分からない人は、中学校の数学を見直すか、できるんだと思い込んでください。
足し算にできたら、あとは -2 を2進数であらわすことができれば、その数と5を足せばよさそうです。
つまり、マイナスの数を2進数で書くことさえできれば、2進数のひき算もできるということです。
では、負の数を2進数であらわすにはどうすればいいでしょうか?
…
じつは、負の数を表す方法は一つではありません。
- 一番左の0,1で符号を表す
- 2の補数を使う
1. 一番左の0,1で符号をあらわす
1は例えば 3 を2進数であらわすと
0011
になるとき、-3 を
1011
のように、一番左の数字を 0 から 1 にすることでマイナスを表現しようとする方法です。
しかし、この方法ではうまくひき算ができないので、1番は使いません。
2. 2の補数を使う
ひき算をするときは2番の「2の補数を使う」方法であらわします。
2の補数(にのほすう)ってなんだよ!と思うでしょう。
はい、私もそう思っていました。
ですが、今は言葉の意味について知っている必要はありません。作り方が分かっていればよいです。
2の補数の作り方は、
2進数のすべての0と1を反転させて、1を足す
だけです。
もう一度言います。2の補数は「0と1を反転して、1足す」です。
例を見ましょう。
先ほどと同じく 3 (2進数で0011) にマイナスをつけた、-3 を2の補数を使って表します。
2の補数の作り方は「0と1を反転して、1足す」だったので、
まず反転して、
0011 → 1100 (0と1を反転)
さらに、1足すので、
1100 → 1101 (0001を足す)
となります。つまり、1101 が -3 を2進数を使って表した数ということになります。
ほかの数でも試しましょう。5 は2進数では 0101 なので、2の補数を考えると、
0と1を反転して、
0101 → 1010
1足して、
1010 → 1011
つまり、-5 を2進数であらわすと、1011ということです。
ひき算をしよう!
では、実際にひき算を解いてみましょう!
問1. 5 - 2
はじめの方にも書いていた 5 - 2 を、2進数をつかって計算しましょう。
まず、5 - 2 を2進数に直しましょう。
最初に、5 - 2 を、5 + (-2) とみなします。
5 は2進数で 0101 です。
-2 は2進数で…?
-2 を2進数であらわすためには、2を2進数にした 0010 に対して、2の補数をとります。
2の補数の作り方は「0と1を反転して、1足す」ので、
0010 → 1101 → 1110 (0と1を反転→1足す)
となります。
これで、5 と -2 がどちらも2進数であらわせたので、それらをたし算します。
0101 + 1110 (5 + (-2))
たし算の方法は、前回学んだように、同じ位どうしでたし算するだけです。筆算は省略します。
0101 + 1110 = 10011
最後に、もう1ステップです。
5ケタ目を消します。つまり、10011 → 0011 です。
なぜかというと、今回は2進数を4ケタしか使ってはいけないというルールにしているので、5ケタの場合は強制的に4ケタにします。
つまり、ひき算の答えは 0011 です。
0011 は、10進数に直すと 3 なので、5 - 2 = 3 を正しく計算できているということですね!
問2. 7 - 5
もう一問、解いてみましょう。
次は、7 - 5 です。
まず、7 - 5 を2進数であらわしましょう。
最初に、7 - 5 を、7 + (-5) とみなします。
7 は2進数で 0111、
-5 は2進数で 1011です。
これは 5(2進数で 0101) の2の補数をとったものです。
もともとが
0101
0と1を反転して
1010
1を足して
1011 (これが-5)
2進数に直せたので、7 + (-5) を計算します。
0111 + 1011 = 10010
最後に、5ケタ目を無視します。
つまり、10010 → 0010 です。
というわけで、ひき算の答えは 0010 です。
0010 は10進数に直すと 2 なので、7 - 5 = 2 を正しく計算できたことになります。
ひき算まとめ
まとめると、ひき算の方法は
- Step 15 - 2 を2進数に直す
5 - 2 を2進数にします。
5はそのまま2進数にして0101。
-2 を2進数であらわすためには、2 を2進数であらわした 0010 に対して「0と1を反転させて、1足す」をして0010 → 1101 → 1110
1110 を、0010の2の補数といいます。 - Step 2足し算をする
5 + (-2) を計算します。
0101 + 1110 = 10011 - Step 35ケタ目を無視
5ケタ目は消します。
0011
これが答えです。(10進数で 3 )
というものでした。2の補数というみなれない言葉が出てきたので、たし算のときよりも難しく感じたかもしれません。
しかし、たし算ができれば、まとめるとシンプルに計算ができます。
もっと知りたい!
今回は、2進数でひき算をする方法について解説しました。
なぜ「0と1を反転して、1足す」とマイナスの数が表せるのか?
2進数で4ケタしか使ってはいけないってルールはなんで?
ということなど、いろいろ疑問をもつ人もいると思います。YouTube の動画では、よりくわしく解説していますので、そちらもぜひごらんになってください。
コメント