PMプロジェクトマネージャ試験 午前Ⅰ

平成31年度春期 プロジェクトマネージャ 午前Ⅰ 問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進数表現にして,桁ごとの論理積及び論理和をとったものとする。
公式問題冊子の問1(図や選択肢を含む)
公式問題冊子の問1(図や選択肢を含む)

選択肢

  1. ア
    (n+1) AND 255
  2. イ
    (n+1) AND 256
  3. ウ
    (n+1) OR 255
  4. エ
    (n+1) OR 256
解き方のヒントを見る

具体値の代入で式の振る舞いを確かめる

ビット演算で表された式は、見た目だけで判断すると誤りやすい分野です。求められている関数の対応関係を自分で書き出し、いくつかの入力値を実際に式へ当てはめて、結果が一致するかを一つずつ確かめる姿勢が大切です。

この問題で問われていること

この問題で意識したいのは、入力が範囲の端に達したときの扱いです。途中の値だけで一致しても、端の値やその前後で期待どおりの出力になるかは別に確認する必要があります。両端を含めて検証しましょう。

視点

ビット演算を含む式を読むときは、まず入力と出力の対応を自分の言葉や小さな一覧で整理します。そのうえで、式を構成する各演算がどの順序で評価されるか(括弧や演算子の優先順位)を確認し、途中結果を2進数で書き出しながら追うと誤読を防げます。扱う値が何ビットで表されるかという前提も意識すると、結果の解釈がぶれにくくなります。

確認ポイント

  • 求められている関数について、入力と出力の対応を自分で書き出したか
  • 範囲の端の値とその前後の値を、実際に式へ代入して結果を確かめたか
  • 途中結果を2進数で書き、演算の評価順序どおりに追えているか
正解と解説を見る

正解

ア

解説

255は2進数で11111111(下位8ビットがすべて1)です。これとANDをとると、n+1の下位8ビットだけが残ります。n=255のときだけn+1=256が8ビットからあふれますが、ANDでその桁が消えて0になります。そのため、next(n)と等しい式はアの(n+1) AND 255です。

理由

255=11111111(2)で、下位8ビットがすべて1です。0≦n<255のとき、n+1は1〜255で8ビットに収まるので、(n+1) AND 255=n+1となります。n=255のときは、n+1=256=100000000(2)で下位8ビットがすべて0なので、256 AND 255=0となります。どちらも定義のnext(n)と一致します。

比較

256=100000000(2)は、2^8の桁だけが1です。これとANDをとると、2^8の桁だけが残ります。ORをとると、定数のビットが強制的に1になります。例としてn=0(正しい値は1)を当てはめると、イは0、ウは255、エは257です。n=255(正しい値は0)では、イは256、ウは511、エは256になり、どれも定義と一致しません。

選択肢ア(正解)

これは正解だよ。255は2進数で11111111(下位8ビットがすべて1)なので、ANDをとるとn+1の下位8ビットだけが残る。0≦n<255ではn+1は1〜255で8ビットに収まるので、値はそのまま残る。n=255ではn+1=256=100000000(2)で下位8ビットがすべて0なので、結果は0になる。どちらもnext(n)の定義と一致する。

選択肢イ

これは不正解だよ。256は2進数で100000000で、2^8の桁だけが1である。ANDをとるとn+1のその桁だけが残る。0≦n<255ではn+1は255以下で2^8の桁が0なので、結果は0になりn+1にならない(例:n=0で0)。n=255ではn+1=256なので結果は256になり、定義の0とも一致しない。

選択肢ウ

これは不正解だよ。255=11111111(2)とORをとると、下位8ビットがすべて1になる。0≦n<255では、n+1(1〜255)とのORは常に255になる。たとえばn=0では、next(0)=1なのに結果は255になる。n=255では、256=100000000(2)とのORが111111111(2)=511になり、定義の0と一致しない。

選択肢エ

これは不正解だよ。256=100000000(2)とORをとると、2^8の桁が必ず1になる。0≦n<255ではn+1は255以下で2^8の桁が0なので、結果は(n+1)+256になる(例:n=0で257)。n=255ではn+1=256なので、256 OR 256=256となり、定義の0と一致しない。

学習のポイント

ANDとORでのマスクの効果と、境界値n=255で8ビットからあふれるときの扱いを確認することが大切です。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 プロジェクトマネージャ試験 午前Ⅰ 問1(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針