「シフト演算って何…?」
応用情報技術者試験では毎年のように出題される超頻出テーマですが、
- 左シフトと右シフトの違いは?
- なぜビットをずらすの?
- 掛け算・割り算になるって本当?
- 論理シフトと算術シフトは何が違うの?
で苦手な人が非常に多い分野です。
この記事では、
- シフト演算とは?
- 左シフト・右シフト
- 論理シフト・算術シフト
- 覚え方
- 試験での頻出ポイント
を5分で理解できるように解説します!
まず結論
シフト演算
「ビットを左右にずらす演算」
ビットを1つ動かすだけで、
2倍・2分の1の計算ができます。
シフト演算とは?
超重要!
例えば
0011
という4ビットがあります。
これを左右へ移動させる操作が
シフト演算
です。
左シフトとは?
超頻出!
ビットを
← 左
へ1つずらします。
例えば
0011
↓
左へ1ビット
0110
になります。
10進数で考えると
0011=3
↓
0110=6
つまり
2倍
になります。
左シフトのポイント
超重要!
左へ1ビット
↓
×2
左へ2ビット
↓
×4
左へ3ビット
↓
×8
右シフトとは?
超頻出!
ビットを
→ 右
へ1つずらします。
例えば
1000
↓
右へ1ビット
0100
になります。
10進数で考えると
1000=8
↓
0100=4
つまり
2分の1
になります。
右シフトのポイント
超重要!
右へ1ビット
↓
÷2
右へ2ビット
↓
÷4
右へ3ビット
↓
÷8
イメージ
左シフト
×2
↓
右シフト
÷2
論理シフトとは?
応用情報で頻出!
空いた場所に
必ず0
を入れます。
例えば
0011
↓
左へ
0110
右へ
0001
算術シフトとは?
超頻出!
負の数を扱うため、
一番左の
符号ビット
を保持します。
例えば
1100
を右シフトすると
1110
になります。
論理シフトと算術シフトの違い
超頻出!
| 比較 | 論理シフト | 算術シフト |
|---|---|---|
| 空いた場所 | 0を入れる | 符号ビットを維持 |
| 主な用途 | 一般的なビット操作 | 負数の計算 |
| 符号 | 考慮しない | 考慮する |
計算例
例えば
0101
(5)
を左へ1ビット
↓
1010
(10)
右へ1ビット
↓
0010
(2)
試験での覚え方
超重要!
左シフト
×2
右シフト
÷2
論理シフト
0を入れる
算術シフト
符号を残す
よくあるひっかけ
「左シフトは÷2になる」
→ ❌違う!
左シフトは
×2
「右シフトは×2になる」
→ ❌違う!
右シフトは
÷2
「論理シフトは符号を保持する」
→ ❌違う!
符号を保持するのは
算術シフト
応用情報で超頻出
かなり狙われる👇
- シフト演算
- 左シフト
- 右シフト
- 論理シフト
- 算術シフト
- ビット演算
1分で復習!
左シフト
×2
右シフト
÷2
論理シフト
0を入れる
算術シフト
符号を保持する
超重要
- 左へ1ビット=×2
- 右へ1ビット=÷2
- 論理シフト=空きを0で埋める
- 算術シフト=符号ビットを維持する
- ビット演算の定番問題!
練習問題
問題
2進数「0011」を左に1ビット論理シフトした結果として正しいものはどれか。
ア 0001
イ 0110
ウ 1100
エ 1110
解答
正解:イ
解説
「0011」を左に1ビット移動すると、
0011
↓
0110
まとめ
シフト演算とは
「ビットを左右へずらす演算」
超重要
- 左シフト=×2
- 右シフト=÷2
- 論理シフトは0を入れる
- 算術シフトは符号ビットを維持する
- 左右どちらへ何ビット移動するかが頻出
まずは、
「左=2倍」
「右=2分の1」
このイメージを持つと、シフト演算の問題が一気に解けるようになります!
知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

未経験から、ITエンジニアへ。
「IT業界に興味はあるけれど、自分にできるか不安」「何から始めればいいのか分からない」そんな方のために、Tech GO は未経験からのIT転職を専門的にサポートします。求人を紹介するだけではなく、あなたの強みを整理し、応募準備から入社後の成…
まずは無料でキャリア相談

コメント