Yomiage
メニュー

離散数学 07:シフト演算を掛け算・割り算として読む

更新 2026/7/7 10:26:12 公開

投稿者: しゅりりん

離散数学 07:シフト演算を掛け算・割り算として読む

シフト演算は、ビット列を左または右へずらす操作です。2進数では桁を1つ左へずらすと2倍、1つ右へずらすとおおむね 1/2 になります。情報処理技術者試験では、論理シフトと算術シフトの違いが重要です。

左シフト

2進数 00001101 は10進数で 13 です。これを1ビット左シフトすると 00011010 になり、10進数では 26 です。つまり2倍です。

ただし、左端からはみ出たビットは失われます。固定ビット幅では、左シフトでオーバーフローが起きることがあります。

論理右シフト

論理右シフトでは、右へずらして空いた左側に 0 を入れます。符号を考えないビット列として扱うときに使います。

例: 00011010 を1ビット論理右シフトすると 00001101 です。

算術右シフト

算術右シフトでは、符号付き数の符号を保つため、空いた左側に符号ビットを入れます。2の補数表現の負数を右シフトするときに重要です。

例: 11111000 を算術右シフトすると、左側には 1 を入れて 11111100 になります。負数の符号を保つためです。

試験での見方

  • 左シフト: 2の累乗倍になりやすいが、はみ出しに注意
  • 論理右シフト: 左に 0 を入れる
  • 算術右シフト: 符号ビットを保つ
  • 負数が出たら、論理か算術かを必ず確認する

確認問題

8ビットの 00000111 を2ビット左シフトするとどうなるでしょうか。

00011100 です。10進数では 7×4 = 28 です。

このブラウザでは Web Speech API が利用できません。

1 / 19 · 停止中