応用情報技術者 2021年 秋期 午前2 問08
問題文
演算レジスタが16ビットのCPUで符号付き 16ビット整数、を16ビット符号付き加算() するときに、全ての、の組合せにおいて加算結果がオーバフローしないものはどれか。ここで、はの絶対値を表し、負数は2の補数で表すものとする。
選択肢
ア:の場合
イ:及びがともに32,767 未満の場合
ウ:の場合
エ:との符号が異なる場合(正解)
演算レジスタが16ビットのCPUで符号付き16ビット加算のオーバーフロー判定【午前2 解説】
要点まとめ
- 結論:符号付き16ビット整数の加算でオーバーフローしないのは「符号が異なる場合」のみです。
- 根拠:符号付き加算のオーバーフローは、同符号同士の加算で結果の符号が変わると発生します。
- 差がつくポイント:符号の違いによる加算は結果が必ず範囲内に収まるため、オーバーフローの心配がありません。
正解の理由
符号付き16ビット整数はからまで表現可能です。加算でオーバーフローが起きるのは、正の数同士の加算で結果がを超えるか、負の数同士の加算で結果が未満になる場合です。
一方、との符号が異なる場合、加算結果は必ず両数の差の範囲内に収まるため、オーバーフローは発生しません。したがって、選択肢エが正解です。
一方、との符号が異なる場合、加算結果は必ず両数の差の範囲内に収まるため、オーバーフローは発生しません。したがって、選択肢エが正解です。
よくある誤解
「絶対値の和が範囲内ならオーバーフローしない」と考えがちですが、符号付き加算では符号の組み合わせが重要です。
また、正負の積が正ならオーバーフローしないというのも誤りです。
また、正負の積が正ならオーバーフローしないというのも誤りです。
解法ステップ
- 符号付き16ビット整数の表現範囲を確認する(~)。
- オーバーフローの定義を理解する(結果が表現範囲外になること)。
- 同符号同士の加算でオーバーフローが起きる可能性を考える。
- 符号が異なる場合は結果が差の範囲内に収まるためオーバーフローしないと判断する。
- 選択肢を比較し、符号が異なる場合のみ全ての組合せでオーバーフローしないことを確認する。
選択肢別の誤答解説
- ア: は絶対値の和の条件ですが、符号付き加算のオーバーフロー判定には不十分です。
- イ: 及びがともに32,767未満でも、同符号で大きな値同士の加算はオーバーフローします。
- ウ: は同符号を意味しますが、同符号同士の加算はオーバーフローのリスクがあります。
- エ: との符号が異なる場合は、加算結果が必ず範囲内に収まるためオーバーフローしません。
補足コラム
符号付き整数の加算でオーバーフローを検出する方法として、CPU内部では「キャリー」と「オーバーフローフラグ」が用いられます。特にオーバーフローフラグは、最上位ビットのキャリーとその前のビットのキャリーの不一致で判定されます。
また、2の補数表現では符号が異なる数同士の加算は結果が範囲内に収まるため、オーバーフローは起きません。
また、2の補数表現では符号が異なる数同士の加算は結果が範囲内に収まるため、オーバーフローは起きません。
FAQ
Q: 符号付き加算でオーバーフローが起きる条件は?
A: 同じ符号の数同士を加算し、結果の符号が変わる場合にオーバーフローが発生します。
A: 同じ符号の数同士を加算し、結果の符号が変わる場合にオーバーフローが発生します。
Q: 符号が異なる数同士の加算でオーバーフローは起きますか?
A: いいえ、符号が異なる場合は結果が必ず範囲内に収まるためオーバーフローは起きません。
A: いいえ、符号が異なる場合は結果が必ず範囲内に収まるためオーバーフローは起きません。
関連キーワード: 符号付き整数、16ビット加算、オーバーフロー、2の補数、CPU演算

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

