情報処理安全確保支援士平成31年春期 午前Ⅰ 問1

問1

0以上255以下の整数nに対して,
am1/01.gif/image-size:207×38
と定義する。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
  • [出典]
  • 応用情報技術者
    平成31年春期 問1と同題

分類

テクノロジ系 » 基礎理論 » 離散数学

正解

解説

next(n)は、引数nが0~254の場合には引数に1を加えた値を返し、255では0を返します。

この問題で考えなければならないポイントは、次の2点です。
  • 1ずつ加算がおこなわれるか。
  • next(255)のときに結果が 0 となるか。
この点を検証するためにnext(1)とnext(255)の結果をそれぞれ考えてみます。
  • 正しい。ビットマスクの255を2進数で表すと「11111111」で、このビット列との論理積(AND)は(n+1)の下位8ビットだけを取り出すように作用します。引数が255の場合には、最上位ビットの演算結果が0になるので関数は0を返します。
    am1/01a.gif/image-size:435×120
  • ビットマスクの256を2進数で表すと「1 00000000」です。どの引数を与えても下位8ビットの演算結果が常に0になってしまうため誤りです。
    am1/01i.gif/image-size:435×120
  • ビットマスクの255を2進数で表すと「11111111」で、このビット列と論理和(OR)演算を行った結果の下位8ビットは常に「11111111」になります。0≦n<255では常に255、255では511が返るため誤りです。
    am1/01u.gif/image-size:435×120
  • ビットマスクの256を2進数で表すと「1 00000000」で、このビット列と論理和(OR)演算を行った結果の最上位ビットは常に1になります。どの引数を与えても常に256以上の値が返るため誤りです。
    am1/01e.gif/image-size:435×120
© 2014-2024 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop