コンピュータでは、かけ算やわり算の演算を行うのに、
ビット状態をそのまま動かして処理を 行います。
それを、「シフト演算」と呼びます。
そのやり方には データの保持の仕方により、
算術シフトと論理シフトの2種類あります。
この2つは、
演算に使うデータビット列の左端の1ビットを
符号ビットとして扱うかどうか
で異なります。
符号付きのデータの場合、
左端を符号としているため、マイナスの場合「1」がたっています。
算術シフトの場合は、
符号ビットを固定してシフトを行います。
論理シフトの場合は、
すべてのビットを対象にビットのシフトが行われます。
いずれの場合も、桁あふれをおこしたビットは捨てられ、
空いたビットには
算術シフトの右シフトの場合のみ、符号ビットと同じもので埋められ、
そのほかの場合は、0で埋められます。
【基本情報技術者試験 平成25年秋期】
午前問2
32ビットのレジスタに16進数ABCDが入っているとき,
2ビットだけ右に論理シフトしたときの値はどれか
ア.2AF3 イ.6AF3 ウ.AF34 エ.EAF3
【解説】
16進数ABCDを まず2進数に変換します。
A B C D
↓ ↓ ↓ ↓
1010 1011 1100 1101
右に2ビットの論理シフトをすると 左の2ビットが空白になります
△△10 1010 1111 0011 最初の右2ケタの’01’がおちます
空いた場所を 論理シフトなので 0で埋めます。
結果
0010 1010 1111 0011
↓ ↓ ↓ ↓
2 A F 3
【正答】 ア