ビットシフト演算のやり方
ビットシフトは、2進数の各ビットを左または右へ移動させる演算です。基本ルールを覚えれば、計算はかなりシンプルです。
→ ビットシフト演算トレーニングを開く
左シフト(<<)
すべてのビットを左へ移動し、右側の空いた桁を0で埋めます。固定bit幅では、左端からはみ出したビットは捨てます。
右シフト(>>)
すべてのビットを右へ移動します。このトレーニングでは論理右シフトを扱い、左側の空いた桁は0で埋めます。
固定bit幅では「はみ出し」に注意
たとえば4bitの 1100 を左へ1bitシフトすると、本来は11000ですが、4bitでは左端の1が範囲外になります。
算術右シフトとの違い
右シフトには「論理右シフト」と「算術右シフト」があります。論理右シフトは左側を0で埋めます。算術右シフトは符号付き整数で符号を維持するため、最上位ビットを引き継ぐ場合があります。
シフト演算を解く手順
まずbit幅を確認し、左または右へ指定数だけ移動します。論理シフトでは空いた桁を0で埋め、固定bit幅から外れたbitは捨てます。
具体例:8bitの左シフト
01011010
元の値45に対して結果は90です。桁あふれがなければ、左1bitシフトは2倍に対応します。
右シフトの考え方
符号なし整数の論理右シフトでは、左側を0で埋めます。右へ1bit移動するごとに、整数としては概ね2で割る操作に対応します。
よくある間違い
8bit問題なら結果も8bitです。また、論理シフトと符号を考慮する算術シフトを混同しないよう、問題文の指定を確認しましょう。
試験でのポイント
シフト後の2進数を書いてから10進数へ戻すと、暗算だけで処理するより桁あふれや0埋めのミスを減らせます。
ビットシフトとは?
ビットシフトは、2進数の各bitを左または右へ移動する操作です。左シフト・右シフトがあり、整数の計算やbit単位の処理を理解するうえで重要です。
左シフトすると何倍になる?
桁あふれがない符号なし整数では、1bit左へ移動すると2倍、2bitなら4倍、3bitなら8倍に対応します。
右シフトするとどうなる?
符号なし整数の論理右シフトでは、1bit右へ移動するごとに整数として概ね2で割る操作に対応します。右端から外れたbitは捨てられます。
論理シフトと算術シフトの違い
論理シフトは空いたbitを0で埋めます。算術右シフトでは、符号付き整数の符号を保つため最上位bitを考慮して埋める場合があります。問題文でどちらのシフトか確認することが重要です。
ビットシフトでよくある間違い
8bitならシフト後も8bitとして考え、範囲外へ出たbitを残さないようにします。
左シフト・右シフトを4bit・8bit・16bitで反復できます。