過去問解きまくり研究所 ホーム

平成24年度 秋期 午前 問1

離散数学

算術シフトに関する問題

8ビットの2進数 11010000 を右に2ビット算術シフトしたものを,00010100 から減じた値はどれか。ここで,負の数は2の補数表現によるものとする。

答えと解説を見る

✓ これが正解ウ00100000

解説

算術シフトは符号を保つので−12となり、20−(−12)=32です。

2進数を右へずらす操作には二つの種類があり、空いた上位の桁に何を詰めるかが違います。ここでの軸は二つです。一つ目は詰める値で、算術シフトは符号を表す先頭の桁と同じものを補うので、負の数はずらした後も負の数のままです。二つ目は引き算の向きで、どちらから何を引くのかを設問の言葉どおりに読み取ります。実際に追うと、11010000は先頭が1なので、2の補数として読めば−48です。右へ2桁の算術シフトを行うと先頭の1が補われて11110100、つまり−12になります。00010100は20ですから、20から−12を引くと32となり、8桁で表せば00100000です。負の値を引くことは足すことと同じだ、という点がこの問題の勘所です。

ほかの選択肢はなぜ違うのか

出典:平成24年度 秋期 基本情報技術者試験 午前 問1

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)