シフト演算は、基本情報技術者試験の基礎理論の重要なトピックの一つです。
ここでは、「シフトによる乗算の求め方」についてわかりやすく解説します。
|例題「2進数mの9倍の値を求める方法」で解説
シフト演算を利用した乗算では、2進数の桁移動を用いて数値を拡大する方法があります。
なお、桁移動によってオーバーフローが発生しないものとします。
まず、2進数mの9倍の値を求めるためには、mを3ビット左にシフトしてからm自体を足し合わせることで計算できます。
>以下は手順の通りです。
1.2進数mを3ビット左にシフトします。このとき、右に3つの0を追加します。シフトによって数値は拡大されます。
2.シフトした結果を元の数値mと足し合わせます。これにより、9倍の値を得ることができます。
>例として、2進数mが「1101」である場合を考えます。
>以下は手順の通りです。
1.2進数mを3ビット左にシフトします。すると、mは「1101000」となります。
2.シフトした結果と元の数値mを足し合わせます。計算すると、「1101 + 1101000」ですが、オーバーフローは発生しないので、繰り上がりの処理は不要です。結果は「1110101」です。
したがって、2進数mの9倍の値は「1110101」となります。
|まとめ
以上が、シフト演算を用いた2進数の9倍の計算方法の解説です。
シフト演算を利用した乗算は、ビット演算の特性を活かした高速な計算方法です。
オーバーフローに注意しながら適切に桁移動を行うことで、効率的に乗算を行うことができます。
シフト演算の理解と適切な応用により、高速な演算を実現することができます。