令和5年度 春期 ITストラテジスト試験 システムアーキテクト試験 ネットワークスペシャリスト試験 ITサービスマネージャ試験 情報処理安全確保支援士試験 午前Ⅰ 問題【共通】 問1

0以上255以下の整数nnに対して,

[図表: bb_3_1]

と定義する。next(n)next(n)と等しい式はどれか。ここで,x AND yx \text{ AND } y及びx OR yx \text{ OR } yは,それぞれxxとyyを2進数表現にして,桁ごとの論理積及び論理和をとったものとする。

next(n) の関数定義
図の説明テキスト

next(n) の関数定義を示す数式。n+1 (0≦n<255) と 0 (n=255) の条件分岐が波括弧でまとめられている。

解答・解説

正解: ア. (n+1) AND 255(n + 1) \text{ AND } 255

本設問は、nn の値が 00 から 255255 までの範囲で循環するカウンタの動作をビット論理演算で実現する方法を問う問題です。

255 は2進数で表現すると8ビットのすべてが1(11111111)になります。

  • nn が 00 から 254254 の場合、n+1n+1 は 11 から 255255 の範囲となります。これと 255255 の AND(論理積) をとると、結果はそのまま n+1n+1 となります。
  • nn が 255255 の場合、n+1n+1 は 256256 となり、2進数で 100000000 となります。これと 255255 (9ビット表現で 011111111)の AND をとると、すべてのビットが0となり、結果は 00 に戻ります。

したがって、next(n)next(n) と等しい式は (n+1) AND 255(n + 1) \text{ AND } 255 となります。

各選択肢の解説

  • ア: 正解です。上記の通り、00 から 255255 まで循環する正しい式です。
  • イ: 誤りです。256256 は2進数で 100000000 です。これと AND をとると、n+1n+1 が 256256 のときのみ 256256 となり、それ以外のときは 00 になってしまいます。
  • ウ: 誤りです。255255 と OR(論理和)をとると、下位8ビットがすべて1になるため、nn が 254254 以下のときは常に 255255 になってしまいます。
  • エ: 誤りです。256256 と OR をとると、常に9ビット目が1となるため、256256 以上の値になってしまいます。

Spineチーム