応用情報技術者試験 令和5年度 春期 午前 問1
0 以上 255 以下の整数 n に対して、 next(n) = n+1 (0≦n<255) 0 (n=255) と定義する。next(n)と等しい式はどれか。ここで、x AND y 及び x OR y は、それぞれ x と y を 2 進数表現にして、桁ごとの論理積及び論理和をとったものとする。
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ア
255は2進数で11111111であり、下位8ビットが全て1です。したがって、ある数と255とのANDを取ると、その数の下位8ビットだけが残り、9ビット目以上は0になります。 0≦n<255では、1≦n+1≦255なので、n+1は8ビット以内に収まります。このため、(n+1)AND 255=n+1です。一方、n=255のときは、n+1=256=100000000₂です。これと255=011111111₂とのANDを取ると、100000000₂ AND 011111111₂=000000000₂=0となります。よって、どちらの場合もnext(n)の定義と一致します。
イの(n+1)AND 256は誤りです。256は100000000₂なので、9ビット目だけを取り出す式です。n<255では結果が0となり、n=255では256となるため、求める循環処理になりません。
ウの(n+1)OR 255は誤りです。下位8ビットを全て1にする式なので、多くの場合に結果が255となり、n=255では256 OR 255=511になります。
エの(n+1)OR 256は誤りです。9ビット目を強制的に1にする式なので、n<255でも結果が257以上になり、n=255でも0にはなりません。
【ポイント】 ANDによるビットマスクは、必要なビットだけを残す処理に用います。 2のべき乗である256を法とする剰余と同様に、下位8ビットだけを残せば0~255の範囲で循環できます。
出典:令和5年度 春期 応用情報技術者試験 午前 問1
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる