今回は、基本情報技術者試験の2進数章について、引き算の手法を3種類メモします。
私は基本情報技術者試験の計算問題がとにかく嫌いで、この足ぎりを意味のないものにするために解き方のメモを残します。
①10進数変換法〜基本情報技術者試験の2進数引き算の手法〜
- 引き算で使用するそれぞれの2進数を10新数に変換し
- 10進数で引き算を計算し
- 結果を再度2新数に変換します
下記記事の知識だけででき、10進数を扱うので2進数で計算したくない時におすすめです。

②筆算法〜基本情報技術者試験の2進数引き算の手法〜
筆算で計算する方法です。
0010 1000
-0000 0001
この時、右端の桁について0から1を引けないので あらゆる解説では「桁を借りる」と表現しますが
私、は違います。 「参照する桁を広げる」と表現します。
- 参照する桁を広げて00 - 1 にするのです
- 足りないので 000-1に広げます
- まだ足りないので さらに広げて1000-1です
足りましたね。
1引くということは"桁上がりの直前になる"ということなので、 0111 になります。
0010 1000
-0000 0001
-----------------
00100111
下図の通り、引き算に使用した"1"や、参照を広げた部分を消しながら筆算していくとできます。

③補数足し算法〜基本情報技術者試験の2進数引き算の手法〜
0010 1000
-0000 0001
まず、何桁の計算なのかを把握します。
今回は8桁です。
補数を使った場合、オーバーした桁は無視します。
やっていきますね。
-0000 0001 これは言い換えれば +(-0000 0001) になります。
- つまり"マイナス1"の2進数表現を2の歩数で求めて
- それを足し算して
- 桁溢れを消せば答えになります
-1の2の補数を2ステップで求めます
- 0000 0001 を反転します(1の補数) 1111 1110
- 1の補数で求めた結果に1を足します(2の補数) 1111 1111
- これが2進数で表現した"マイナス1"です。
0010 1000
-0000 0001
は
0010 1000
+1111 1111 と同じなので、これを計算します。
すると、9桁の2新数
1 0010 0111
になります。
今回は8桁の計算なので、溢れた桁を消すと 正しい答えの 0010 0111 を求めることが出来ました。

私が勉強で使用した基本情報技術者試験のテキスト
今回、使用した引き算の例は、実際に過去問にでてくる問題の中から抜粋しました。
実際は計算前後の値を論理演算などでこねこねする感じの問題です。
私が使用したテキストの中で出てきた問題です。
コメント