SkillStack
テクノロジ系1 / 30問

高度情報処理技術者試験・情報処理安全確保支援士試験 令和5年度 春期 午前I 問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進数で表すと、下位8桁が全て1の「11111111」です。このため、ある数と255のANDをとると、下位8ビットだけを残し、それより上位のビットを全て0にできます。0≦n<255では、n+1は1以上255以下なので8ビットに収まり、(n+1)AND 255の結果はそのままn+1です。一方、n=255では、n+1=256=100000000₂となります。これと011111111₂のANDをとると000000000₂、すなわち0になります。したがって、アはnext(n)の定義と全ての範囲で一致します。

イの(n+1)AND 256は誤りです。256は100000000₂なので、256の位だけを取り出すマスクです。n<255では結果が0になり、n=255では256になるため、定義とは逆のような結果になります。

ウの(n+1)OR 255は誤りです。OR 255は下位8ビットを全て1にする処理なので、n<255では常に255になります。また、n=255では256 OR 255=511となり、0にはなりません。

エの(n+1)OR 256も誤りです。これは256の位を必ず1にする処理であり、n<255でも結果が257以上になります。n=255でも結果は256のままです。

【ポイント】 ANDによるビットマスクでは、1の桁を残し、0の桁を消去できます。 8ビットの値に255とのANDをとる処理は、256で割った余りを求める処理と同じです。

出典:令和5年度 春期 高度情報処理技術者試験・情報処理安全確保支援士試験 午前I 問1
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の30問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める