【ITパスポート試験】2進数の引き算は「2の補数」を足し算する

普段使いなれている10進数であれば、簡単な足し算・引き算で答えに詰まることはありません。では2進数で[0110+0011]はいくつ?と聞かれたら、慣れていないため答えに詰まってしまいます。
しかし、10進数でも2進数でも足し算・引き算の基本は変わりありません。下位の桁から順に繰り上がってくる数を考慮しながら、各桁ごとに合計を出します。桁が上がったり下がったりするときの数が異なるくらいです。




コンピュータには「引き算」がない?
足し算に続いて、引き算はどうしたらよいのかというと、コンピュータには「引き算」という概念がありません。そのためこのように考えます。
5-3→5+(-3)
つまり引き算を知らなくても、「負の数」を表現することができれば、足し算の回路だけで両方できるようになるのです。
負の数の表し方




負の数の表し方は多数ありますが、もっとも単純なのは「先頭の1ビットは符号にする」という方法です。




しかしこの方法だと、足しても0になりません。そこで「補数」という方法でやってみます。
補数は「補う数」で2種類ある
補数とは、言葉の通り「補う数」という意味です。補数の種類には、
「その桁数での最大値を得るために補う数」
「次の桁に繰り上がるために補う数」
の2つがあります。
10進数の数字を例に補数を考えてみます。




①で得られた876を「9の補数」、②で得られた877を「10の補数」と呼びます。
続いて2進数でも同様に補数を求めてみます。




2進数の場合は、①で得られた1100を「1の補数」、②で得られた1101を「2の補数」といいます。
この2つの補数を使って、先ほどの10進数「3+(-3)」を2進数でやってみます。




3+(2の補数)を足し算すると、当たり前ですが桁上がりした数になります。この時、8ビットからあふれた9ビット目を無視して、8ビット部分だけ見れば全部0になります。
このように、ある数値に対する2の補数表現は、そのままその数値の負の値として使えるというわけです。このことから、コンピュータは負の数を表すのに2の補数を使います。
2の補数の表し方
2の補数は、次のようにすると簡単に、求めることができます。




①全てのビットを反転させる(0と1を入れ替える)
②それに1を加算すると、「2の補数」が出ます。
2進数の引き算は「2の補数」を足し算する まとめ
- 2進数の足し算は、桁上がりの数以外は10進数と変わらない。
- コンピュータには「引き算」の概念が無いため、「負の数」を足すことで表現する。
- コンピュータは負の数を表すのに、元の数を足したときに桁上がりする「補数」を使う。
【ITパスポート試験】過去問題練習と解説




2進数の演算-1(H29年秋期)
問:二つの2進数01011010と01101011を加算して得られる2進数はどれか。ここで、2進数は値が正の8ビットで表現するものとする。
ア:00110001
イ:01111011
ウ:10000100
エ:11000101
出典:ITパスポート試験ドットコム
2進数の演算-2(H21年秋期)
問:2進数10110を3倍したものはどれか。
ア:111010
イ:111110
ウ:1000010
エ:10110000
出典:ITパスポート試験ドットコム