ITパスポート 2009年 春期 問64
問題文
2進数10110を3倍したものはどれか。
選択肢
ア:111010
イ:111110
ウ:1000010(正解)
エ:10110000
🔒 解説は解答すると表示されます
2進数10110を3倍したものはどれか【ITパスポート 解説】
正解の理由
2進数(バイナリ)は桁ごとに2の冪で重みが決まります。与えられた数 を10進数に直すと です。これを3倍すると になります。 を2進数に戻すと です。したがって選択肢の中では ウ が正しい答えです。
(補足)2進数 の各桁の重み:。
解法ステップ
- 2進数を10進数に変換する方法
- 桁を右から0番目として、各桁に を掛けて合計する。
- 例:。
- 10進数で3倍する
- 。
- 10進数を2進数に戻す
- 66 を2の冪で表すと 。よって 。
- もう一つの速い方法(2進数操作)
- 「3倍」は「2倍+1倍」。2倍は左に1ビットシフト(桁を一つ左へ移す)と同じ。
- まず左に1ビットシフト:(これは44)
- それに元の数を加える:(66)
- これで ウ が得られる。
(計算の追加説明)
- 101100
- +010110
- =1000010 (桁上げ(繰り上がり)が発生して左端が1になる)
選択肢別の誤答解説
- ア: 111010₂
- 10進数に直すと 。元の数の3倍(66)とは異なる。
- イ: 111110₂
- 10進数では 。66ではない。
- ウ: 1000010₂
- 10進数で 。元の の3倍に一致するので正解。
- エ: 10110000₂
- 10進数では 。大幅に異なる。
よくある誤解
- 「2進数で桁を右に足すと3倍になる」と誤解する
- 2進数で桁を右に足す(桁を追加・連結)すると数が変わるが、それは乗算ではなく単なる表記の変更です。3倍は「左シフト(2倍)+元の数(1倍)」で求まります。
- 繰り上がり(キャリー)を忘れる
- ビット同士の足し算で繰り上がりが発生すると、結果の桁数が増えます。加算時に繰り上がり扱いを忘れると誤答になります。
補足コラム
- 「左シフト」はプログラミングやデジタル回路でよく使われます。左に1ビットシフトする操作は数を2倍にするのと同じです。例えば、10進数の20を「2倍」するのに位を一つ上げる(10倍)とは違い、2進数では左シフトが非常に直観的で高速です。
- 逆に右シフトは2で割る(切り捨て)に相当します。
- 3倍は「2倍+1倍」。5倍は「4倍+1倍」で、4倍は左に2ビットシフトする、など小さい定数倍はシフトと足し算で効率的に計算できます。これはコンピュータ内部での計算最適化の基礎です。
FAQ
Q. 2進数の左シフトは本当に常に2倍ですか?
A. はい。符号なし整数の範囲では左に1ビット移動するとその数は2倍になります。ただし、ビット数に上限がありオーバーフロー(桁あふれ)がある環境では注意が必要です。
A. はい。符号なし整数の範囲では左に1ビット移動するとその数は2倍になります。ただし、ビット数に上限がありオーバーフロー(桁あふれ)がある環境では注意が必要です。
Q. 3倍を別の方法で速く計算するコツはありますか?
A. 「3 = 2 + 1」を利用して、左シフト(2倍)と元の数の加算で求めるのが一番速く確実です。多くの手計算問題はこの方法が簡単です。
A. 「3 = 2 + 1」を利用して、左シフト(2倍)と元の数の加算で求めるのが一番速く確実です。多くの手計算問題はこの方法が簡単です。
Q. 2進数を10進数に変換するのが面倒です。直接2進数同士で計算するには?
A. 左シフト+加算の方法が直接2進数同士で行う最も簡単な方法です。桁を揃えて足し算し、繰り上がりを処理すれば良いです。
A. 左シフト+加算の方法が直接2進数同士で行う最も簡単な方法です。桁を揃えて足し算し、繰り上がりを処理すれば良いです。
(練習)別の例:(13)を3倍 → 左シフトで (26)+ (13)= (39)。
関連キーワード: 2進数、二進法、進数変換、ビットシフト、左シフト、バイナリ計算、繰り上がり、基数変換

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

