【初心者向け】2進数「0101」をシフト演算で6倍する考え方

― 暗算しない・分解して考える ―

プログラミング試験や擬似言語問題で、次のような問いが出ることがあります。

「2進数 0101 を、シフト演算を使って 6 倍せよ」

一見すると難しそうですが、実は暗算は一切不要です。

重要なのは、シフト演算の意味を正しく理解し、倍数を分解することです。


1. 前提整理(ここでつまずかない)

まずは落ち着いて状況を整理します。

  • 0101 は 2進数
  • 0101₂ = 5₁₀
  • 6倍 → 5 × 6 = 30
  • 30₁₀ = 11110₂

つまり、答えは 11110 になります。

ただし、試験では

「どうやってシフトで6倍したか」

という 考え方のプロセス が問われています。


2. シフト演算の基本ルール

まず、これだけは確実に押さえましょう。

シフト意味
<< 12倍
<< 24倍
<< 38倍

つまり、左シフトは「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回