基数変換3 2進数の加算と減算
足し算は桁上がり、引き算は桁借りがポイント!
2進数の足し算と引き算をしてみましょう。
2進数の足し算、引き算といっても、これまでと同様、10進数に置き換えて、桁上がりと桁借りの考え方を理解すれば、さほど難しくはありません。
では、まず10進数の足し算と引き算は、どうやっているか思い出してみましょう。
2進数の足し算をマスターしよう!
10進数の89と21を足し算します。
まず1桁目の9+1=10を計算し、2桁目に1を上げて、1桁目は0とします。当たり前のように計算しましたが、この「2桁目に1を上げる」というのが桁上がりです。
1が上がってきた2桁目では、1+8+2=11を計算し、3桁目に1を上げ、2桁目を1とします。
3桁目では、上がってきた1をそのまま下します。
これで89+21=110の計算ができました。
それでは、同じ要領で、2進数の11111と101を足し算してみましょう。
1桁目 1+1=10 ...1桁目は0、2桁目に1上がる
2桁目 1+1+0=10 ...2桁目は0、3桁目に1上がる
3桁目 1+1+1=11 ...3桁目は1、4桁目に1上がる
4桁目 1+1=10 ...4桁目は0、5桁目に1上がる
5桁目 1+1=10 ...5桁目は0、6桁目に1上がる
6桁目 桁上がりの1
したがって、2進数の11111と101を足すと、
11111+101=100100
となります。
2進数は頻繁に桁が上がるのでなじみにくいですが、基本は10進数の計算と同じですね。
どうしても2進数の桁上がりを間違えてしまう場合は、少し遠回りですが、2進数の数値を10進数に変換してから足し算し、最後にまた2進数に変換する方法でも、同じ計算結果になります。
2進数の11111 → 10進数の31 ...桁の重みを利用して基数変換します
2進数の101 → 10進数の5 ...桁の重みを利用して基数変換します
31+5=36
10進数の36 → 2進数の100100 ...除算法を利用して基数変換します
2進数の引き算をマスターしよう!
次は、10進数の130から41を引き算します。
1桁目は0-1なので、そのままでは引き算できません。
そのため、2桁目から10を借りて10-1=9とし、1桁目が9になることを計算します。この「2桁目から10を借りる」というのが桁借りです。
2桁目は、1桁目に1を渡していますので、3-1=2になっています。これで2桁目を計算すると2-4なので、3桁目から10を借りて12-4=8とし、2桁目が8になることを計算します。
3桁目は、2桁目に1を渡していますので、1-1=0です。
これで、130-41=89と計算されましたね。
それでは、同じ要領で、2進数の101110から10011を引き算してみましょう。
10進数の桁借りは10でしたが、2進数では2を借りる、ということに注意しましょう。
1桁目は0-1なので、2桁目から2を借り、2-1=1
2桁目は1を1桁目に渡しているので0-1となっています。そのため3桁目から2を借り、2-1=1
3桁目は0-0ですので、そのまま0-0=0
4桁目は1-0=1
5桁目は6桁目から2を借りて2-1=1
6桁目は1を5桁目に渡しているので0です。
したがって、2進数の101110から10011を引くと、
101110-10011=11011
となります。
2進数の桁借りがわかりにくい場合は、10進数に変換してから計算しましょう。
2進数の101110 → 10進数の46 ...桁の重みを利用して基数変換します
2進数の10011 → 10進数の19 ...桁の重みを利用して基数変換します
46-19=27
10進数の27 → 2進数の11011 ...除算法を利用して基数変換します
2進数の計算問題を解いてみよう!
それでは、実際に出題された問題を解いてみましょう。
試験では選択肢が用意されていますので、すべての桁を計算しなくても解答が導き出せることがあります。時間を効率よく使いましょう。
平成29年春 問72
二つの2進数01011010と01101011を加算して得られる2進数はどれか。ここで、2進数は値が正の8ビットで表現するものとする。
ア 00110001 イ 01111011 ウ 10000100 エ 11000101
正解は...
正解 エ
二つの2進数01011010と01101011を、1桁目から順に加算し、該当しない選択肢を除外していきます。
1桁目 0+1=1
ここで、1桁目の値が0になっている、ウの10000100は除外されます。
2桁目 1+1=10 → 2桁目は0で3桁目に1上がる
ここで、2桁目の値が1になっている、イの01111011は除外されます。
3桁目 1+0+0=1
ここで、3桁目の値が0になっている、アの00110001は除外されます。
したがって、残った選択肢である、エの11000101が正解です。
念のため検算すると、確かにエの11000101ですね。
※問題文にある「8ビットで表現」とは、「8桁の数値で表す」という意味です。問題の数値も選択肢の数値も、左端に0をつけて8桁にしていますね。