【初心者向け】2進数「0101」をシフト演算で6倍する考え方
― 暗算しない・分解して考える ―
プログラミング試験や擬似言語問題で、次のような問いが出ることがあります。
「2進数 0101 を、シフト演算を使って 6 倍せよ」
一見すると難しそうですが、実は暗算は一切不要です。
重要なのは、シフト演算の意味を正しく理解し、倍数を分解することです。
目次
1. 前提整理(ここでつまずかない)
まずは落ち着いて状況を整理します。
- 0101 は 2進数
- 0101₂ = 5₁₀
- 6倍 → 5 × 6 = 30
- 30₁₀ = 11110₂
つまり、答えは 11110 になります。
ただし、試験では
「どうやってシフトで6倍したか」
という 考え方のプロセス が問われています。
2. シフト演算の基本ルール
まず、これだけは確実に押さえましょう。
| シフト | 意味 |
|---|---|
| << 1 | 2倍 |
| << 2 | 4倍 |
| << 3 | 8倍 |
つまり、左シフトは「2の累乗を掛ける操作」です。
3. 6倍はどう考えるか?
ここが最大のポイントです。
6は、2の累乗ではない
→ 分解する
6 = 4 + 2
- 4倍 → << 2
- 2倍 → << 1
4. 実際の計算手順(2進数のまま)
元の値
0101
① 4倍(左シフト2回)
0101 << 2 = 10100
② 2倍(左シフト1回)
0101 << 1 = 01010
③ 加算する
10100
+01010
------
11110
5. 結果
0101 をシフト演算で 6 倍すると
11110
6. 試験で評価される「正しい書き方」
試験やレポートでは、次のように説明できると理想的です。
6 は 4 + 2 に分解できるため、(x << 2) と (x << 1) を加算する。
擬似言語・C系表現(参考)
x * 6 = (x << 2) + (x << 1)
7. よくある間違い
❌ 暗算で 30 を出してしまう
- シフト問題では 過程が重要
- 10進数変換は必須ではない
❌ 一気に 6 倍しようとする
- シフトは 2の累乗しか表現できない
- 必ず分解する
8. 倍数変換 早見表(覚えなくていい)
| 倍数 | 分解 | シフト式 |
|---|---|---|
| 3倍 | 2 + 1 | (x << 1) + x |
| 5倍 | 4 + 1 | (x << 2) + x |
| 6倍 | 4 + 2 | (x << 2) + (x << 1) |
| 7倍 | 4 + 2 + 1 | (x << 2) + (x << 1) + x |
| 10倍 | 8 + 2 | (x << 3) + (x << 1) |
👉 暗記不要
👉 2の累乗に分解するだけ
9. 初学者向けまとめ
- シフト演算は「掛け算」ではない
- 2のブロックを組み合わせる操作
- 倍数は必ず 4 + 2 + 1 のように分解する
一言で言うなら
「シフト問題は、計算力ではなく分解力」
この考え方は、
基本情報技術者試験・科目B・UCAP すべてに共通します。
訪問数 1 回, 今日の訪問数 1回



ディスカッション
コメント一覧
まだ、コメントがありません