STITストラテジスト試験 午前Ⅰ

令和5年度春期 ITストラテジスト 午前Ⅰ 問1

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

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

境界値で循環の振る舞いを確かめる

循環する加算は、値が上限に達した直後に最初の値へ戻るかどうかが要点です。検討する式が通常の範囲だけでなく、戻りが起こる境界の瞬間にも意図どおりの値を返すかを、具体的な値を当てはめて確かめる姿勢を持ちましょう。

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

この問題で確かめたいのは、ビット単位の論理演算によって、加算結果が決められた範囲の内側に収まり続けるかという一点です。範囲の中ほどの値と端の値の両方で、式の結果がどう変わるかを自分で追跡できるかが問われます。

視点

論理演算はビットごとに独立して結果を決めます。そのため、どのビットが残り、どのビットが消えるかを意識すると、演算が値の範囲にどう作用するかを整理しやすくなります。式を演算ごとの段階に分け、各段階で値がどう変化するかを2進数で書き出して観察するのが、基本的な検討手順です。

確認ポイント

  • 範囲の端にあたる値を式に当てはめたとき、結果が範囲の外に出ていないか
  • 途中の値を2進数で書き出したとき、各ビットが論理演算によってどう変化するか
  • 端以外の値でも、加算の結果が意図どおり一つずつ進んでいるか
正解と解説を見る

正解

ア

解説

n+1は1~256の範囲になります。255(2進数11111111)とANDをとると下位8ビットだけが残るので、n<255では結果がn+1のままです。n=255では256の下位8ビットが全て0なので結果は0になります。よって、正答はアの(n+1) AND 255です。

理由

値はすべて単位のない整数です。n<255のとき、n+1は1~255で下位8ビットに収まるため、(n+1) AND 255=n+1です。例:n=0では1 AND 255=00000001(2) AND 11111111(2)=00000001(2)=1となり、next(0)=1と一致します。n=255のとき、n+1=256=100000000(2)なので、256 AND 255=100000000(2) AND 011111111(2)=000000000(2)=0となり、next(255)=0と一致します。

比較

n=0(next=1)とn=255(next=0)で各式を検算します。イ:1 AND 256=0、256 AND 256=256。ウ:1 OR 255=255、256 OR 255=511。エ:1 OR 256=257、256 OR 256=256。どれもnext(n)の定義と一致しません。全ての範囲で一致するのはアの式だけです。

選択肢ア(正解)

これは正解だよ。n+1は1~256の範囲になる。n<255ならn+1は255以下で下位8ビットに収まるので、255(2進数11111111)とANDをとっても値は変わらずn+1になる。n=255ではn+1=256=100000000(2進数)で下位8ビットが全て0なので、256 AND 255=0となる。つまり、全てのnでnext(n)の定義と一致する。

選択肢イ

これは不正解だよ。256は2進数で100000000となり、2^8の桁だけが1である。n<255ではn+1は255以下でこの桁が0なので、結果は常に0になる。例えばn=0ではnext(0)=1なのに、1 AND 256=0となってしまう。n=255でも256 AND 256=256となり、定義の0と一致しない。

選択肢ウ

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

選択肢エ

これは不正解だよ。256(2進数100000000)とORをとると、2^8の桁が1になる。n<255ではn+1のこの桁は0なので、結果はn+1+256=n+257になる。例えばn=0では257となり、next(0)=1と異なる。n=255でも256 OR 256=256となり、定義の0と一致しない。

学習のポイント

特定のビットを取り出すANDマスクと、特定のビットを1にするORの働きを、境界値で確認する考え方

出典:独立行政法人 情報処理推進機構(IPA)令和5年度春期 ITストラテジスト試験 午前Ⅰ 問1(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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