正答1
解説
正解は1です。
この問題は、16進数を2進数に直して論理シフトを行えるかを問うています。
論理シフトでは、ビットをずらして空いた位置に必ず0を入れます。
32ビットのレジスタなので、ABCDは上位に0が並んだ0000ABCDとして扱います。
【計算】
ABCD(16進)=1010 1011 1100 1101(2進、下位16ビット)です。
2ビット右へずらすと、下位2ビットの01が捨てられます。
上位から0が2つ入るので、下位16ビットは0010 1010 1111 0011になります。
4ビットずつ16進に直すと、0010=2、1010=A、1111=F、0011=3です。
よって結果は00002AF3、つまり2AF3です。
【選択肢別解説】
1:○ 上の計算どおり、2ビット論理右シフトした値は2AF3です。
右シフト1回は2で割ることに当たるので、ABCD÷4の商(43,981÷4=10,995)とも一致します。
2:× 6AF3は、16ビットのABCDを2ビット右へ循環シフトした値です。
論理シフトでは捨てたビットを上位に戻さないので誤りです。
3:× AF34は、2ビット左へシフトした値の下位16ビットです。
問題は右シフトなので、シフトの向きが逆です。
4:× EAF3は、16ビットの値として算術右シフトし、上位に符号ビットの1を入れた値です。
論理シフトでは上位に0を入れ、しかも32ビットでは最上位ビットが0なので誤りです。
【ポイント】
論理シフトは空いた位置に常に0を入れ、算術右シフトは符号ビットと同じ値を入れます。
循環シフトは押し出したビットを反対側に戻す点が異なります。