修了試験 2011-07-24実施分 基本情報技術者試験 問2
10進数の-20を2の補数表現で8ビットのレジスタに記憶する。 これを右に3ビット算術シフトした結果を10進数で表したものはどれか。
正答2
解説
正解は2です。 負の数を2の補数で表し、算術シフトでどう変わるかを問う問題です。 算術右シフトでは、空いた上位ビットに符号ビットと同じ値を入れます。 【計算】 +20は8ビットで00010100です。 全ビットを反転すると11101011になります。 1を加えると11101100となり、これが-20の2の補数表現です。 右に3ビット算術シフトすると、上位に符号ビット1が3個入り11111101になります。 11111101の2の補数をとると、反転して00000010、1を加えて00000011です。 00000011は3なので、11111101は-3を表します。 【選択肢別解説】 1:× -115(10001101)は、符号ビットだけを残し、残りの7ビットを0を入れながら右へずらした誤りの値です。 算術右シフトでは空いた上位ビットすべてに符号ビットの1が入り、結果は11111101で-3になります。 2:○ 11101100を算術右シフトした11111101は-3です。 3:× -20÷8=-2.5を0に向かって切り捨てた値です。 算術右シフトは小さい側に切り捨てるため、-3になります。 4:× 27は正の値です。 算術右シフトでは空いた上位ビットに符号ビットの1が入るため、負の数は負のままです。 結果は11111101で-3になります。 【ポイント】 算術右シフトを1ビット行うと、値は2で割って小さい側に切り捨てた数になります。 -20を3ビット右シフトすると、-20÷8=-2.5を切り捨てた-3になると覚えておくと検算できます。まとめて解く
修了試験 2011-07-24実施分を通しで解く(80問)→