スポンサーリンク

【応用情報技術者試験】シフト演算を5分で理解!

「シフト演算って何…?」

応用情報技術者試験では毎年のように出題される超頻出テーマですが、

  • 左シフトと右シフトの違いは?
  • なぜビットをずらすの?
  • 掛け算・割り算になるって本当?
  • 論理シフトと算術シフトは何が違うの?

で苦手な人が非常に多い分野です。

この記事では、

  • シフト演算とは?
  • 左シフト・右シフト
  • 論理シフト・算術シフト
  • 覚え方
  • 試験での頻出ポイント

を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」

このイメージを持つと、シフト演算の問題が一気に解けるようになります!


知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

404 NOT FOUND | 学びチャンネル
日々の学びをまとめていきます!

まずは無料でキャリア相談

コメント