AUシステム監査技術者試験 午前Ⅰ
令和3年度秋期 システム監査技術者 午前Ⅰ 問4
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア|x₁|+|x₂|≦32、768 の場合
- イ|x₁|及び|x₂|がともに 32、767 未満の場合
- ウx₁×x₂>0 の場合
- エx₁ と x₂ の符号が異なる場合
解き方のヒントを見る
符号付き加算を考える視点
計算結果だけで判断せず、入力値の符号と結果の表現範囲の関係に注目し、条件を整理する順序を意識して確認しましょう。
この問題で問われていること
二つの入力と計算後の値について、符号の組合せ、結果の符号、扱える範囲の関係を同じ基準で見比べることに集中しましょう。
視点
入力値どうしの関係と、計算結果が表現可能な範囲に収まるかを切り分け、個別の値に引きずられず条件の組合せを整理します。
確認ポイント
- 入力値の符号の組合せを整理する
- 計算後の値の符号を入力と比較する
- 表現できる範囲との関係を確認する
正解と解説を見る
正解
エ
解説
16ビット符号付き整数の範囲は−32、768から32、767です。同符号の値を加えると範囲外になる可能性がありますが,異符号の加算は差になるため,結果はこの範囲内に収まります。
理由
16ビット符号付き整数の範囲は−2^15=−32、768から2^15−1=32、767です。異なる符号の値を加える計算は,絶対値の大きい側から小さい側を引く形になるため,結果は−32、768以上32、767以下に収まります。
比較
同じ符号の値を加える場合は,正数同士で32、767を超えたり,負数同士で−32、768を下回ったりする可能性があります。そのため,絶対値の条件や積の条件だけでは,全ての組合せでオーバフローしないことを保証できません。
選択肢ア
これは不正解だよ。|x₁|+|x₂|≦32,768でも,例えばx₁=16,384,x₂=16,384なら加算結果は32,768となります。16ビット符号付き整数の最大値は32,767なので,この条件では正数同士の加算で1単位範囲を超える場合があります。
選択肢イ
これは不正解だよ。|x₁|と|x₂|がともに32,767未満でも,例えば正の値32,766同士を加えると結果は65,532になります。これは16ビット符号付き整数の最大値32,767を大きく超えるため,条件だけではオーバフローを防げません。
選択肢ウ
これは不正解だよ。x₁×x₂>0は,二つの値がともに正またはともに負であることを示します。正数同士なら32,767を超え,負数同士なら−32,768を下回る可能性があるため,オーバフローしない条件にはなりません。
選択肢エ(正解)
これは正解だよ。x₁とx₂の符号が異なる場合,加算結果は一方の絶対値から他方を引いた値になります。したがって結果は−32,768以上32,767以下に収まり,16ビット符号付き整数の表現範囲を超えないため,オーバフローしません。
学習のポイント
2の補数の表現範囲と,符号付き加算でのオーバフロー条件を理解する。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 システム監査技術者試験 午前Ⅰ 問4(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針