応用情報技術者試験 応用情報技術者試験 平成31年度春期 午前1: 0 以上 255 以下の整数 n に対して, next(n) = n+1 (0 ≦ n < 255) 0 (n = 255) と定義する。next (n)と等し

応用情報技術者試験 平成31年度春期 午前
Q 11 / 80
0 以上 255 以下の整数 n に対して, next(n) = n+1 (0 ≦ n < 255) 0   (n = 255) と定義する。next (n)と等しい式はどれか。ここで,x AND y 及び x OR y は,それぞれ x と y を 2 進数表現にして,桁ごとの論理積及び論理和をとったものとする。
next(n)の定義式(場合分け)
この問の正解率:56.38%(243件)

問題本文

0 以上 255 以下の整数 n に対して, next(n) = n+1 (0 ≦ n < 255) 0 (n = 255) と定義する。next (n)と等しい式はどれか。ここで,x AND y 及び x OR y は,それぞれ x と y を 2 進数表現にして,桁ごとの論理積及び論理和をとったものとする。

選択肢

  • .(n+1) AND 255
  • .(n+1) AND 256
  • .(n+1) OR 255
  • .(n+1) OR 256

正解

. (n+1) AND 255

解説

0〜255 という範囲は 8 ビット(2進8桁)で表せる値の全範囲であり、255 は 2 進数で 11111111、256 は 100000000(9桁目だけが 1)である点が鍵となる。next(n) は n が 254 までなら n+1、n=255 のときだけ 0 に戻る巡回加算であり、これは 8 ビットの範囲を超えた桁(9桁目)を切り捨てる処理と同じである。255(11111111)との論理積 AND をとると下位 8 ビットだけが残り上位桁は 0 になるため、n+1 が 256(100000000)になったときだけ結果が 0 になり、それ以外は n+1 がそのまま残るので正解はアである。

選択肢ごとの解説

  • .11111111 との AND は下位 8 ビットを残し 9 桁目以上を 0 にするマスク処理であり、n+1 が 0〜255 ならそのまま、256 になったときだけ 0 になるので next(n) の定義と完全に一致する。
  • .256(100000000)との AND は 9 桁目のビットだけを取り出す処理であり、n+1 が 256 のときだけ 256 を返し、それ以外は 0 になるため定義と全く異なる。
  • .255(11111111)との OR は下位 8 ビットをすべて 1 にしてしまうため、n の値にかかわらず結果が常に 255 を含む大きな値となり、n+1 を返せない。
  • .256(100000000)との OR は常に 9 桁目を 1 に立てるため、結果は n+1 に 256 を加えた値になり、巡回加算の動作にならない。

応用情報技術者試験 平成31年度春期 午前過去問一覧へ戻る・問1