令和3年度 秋期 プロジェクトマネージャ試験 データベーススペシャリスト試験 エンベデッドシステムスペシャリスト試験 システム監査技術者試験 情報処理安全確保支援士試験 午前Ⅰ 問題【共通】 問4
演算レジスタが 16 ビットのCPUで符号付き 16 ビット整数 , を 16 ビット符号付き加算()するときに,全ての , の組合せにおいて加算結果がオーバフローしないものはどれか。ここで, は の絶対値を表し,負数は2の補数で表すものとする。
解答・解説
正解: エ. と の符号が異なる場合
16ビットのCPUにおいて、負数を 2の補数 で表す符号付き16ビット整数が表現できる値の範囲は、 です。
加算結果がこの範囲を超えると オーバフロー が発生します。
オーバフローは、同符号の数値(正の数同士、または負の数同士)を加算したときに、結果の絶対値が大きくなることで発生する可能性があります。一方、異符号の数値(正の数と負の数)を加算する場合、実質的には絶対値の引き算となるため、結果の絶対値は加算前の2つの数値の絶対値のうち大きい方よりも必ず小さく(または等しく)なります。したがって、加算結果は元の数値が収まっていた表現可能な範囲内に必ず収まり、オーバフローは絶対に発生しません。
各選択肢の解説
- ア: の場合
例えば、、 とすると、 となり条件を満たしますが、 となり、表現できる上限の を超えるためオーバフローします。 - イ: 及び がともに 未満の場合
例えば、、 とすると、どちらも 未満という条件を満たしますが、 となり、表現できる上限の を超えるためオーバフローします。 - ウ: の場合
積が正になるということは、 と が 同符号(両方とも正、または両方とも負)であることを意味します。同符号の加算は絶対値が大きくなるため、オーバフローが発生する可能性があります。 - エ: と の符号が異なる場合
正解です。正の数と負の数の加算では、結果が表現可能な範囲()をはみ出すことはないため、どのような組み合わせでもオーバフローは発生しません。