応用情報技術者試験 応用情報技術者試験 令和3年度秋期 午前 問8: 演算レジスタが16ビットのCPUで符号付き16ビット整数x1,x2を16ビット符号付き加算(x1+x2)するときに,全てのx1,x2の組合せにおいて加算結果がオ
演算レジスタが16ビットのCPUで符号付き16ビット整数x1,x2を16ビット符号付き加算(x1+x2)するときに,全てのx1,x2の組合せにおいて加算結果がオーバフローしないものはどれか。ここで,|x|はxの絶対値を表し,負数はで表すものとする。
71.77%
問題本文
演算レジスタが16ビットのCPUで符号付き16ビット整数x1,x2を16ビット符号付き加算(x1+x2)するときに,全てのx1,x2の組合せにおいて加算結果がオーバフローしないものはどれか。ここで,はxの絶対値を表し,負数は2の補数で表すものとする。
選択肢
- ア.≦32,768の場合
- イ.がともに32,767未満の場合
- ウ.x1×x20の場合
- エ.x1とx2の符号が異なる場合
解説
16ビットの2の補数(符号付き整数)で表せる範囲は −32,768〜+32,767 であり、加算結果がこの範囲を超えるとオーバフローする。オーバフローは「同符号どうしの加算(正+正 が +32,767 を超える、負+負 が −32,768 を下回る)」でのみ発生する点が核心である。x1 と x2 の符号が異なる場合、和の絶対値は元の数の絶対値以下になり、必ず範囲内に収まるためオーバフローは起こらない。したがって正解はエ。
選択肢ごとの解説
- ア.例えば x1=x2=16,384 とすると絶対値の和は 32,768 で条件を満たすが、和 32,768 は +32,767 を超えるためオーバフローする。条件を満たしてもオーバフローしうるので誤り。
- イ.x1=x2=32,766(ともに32,767未満)でも和は 65,532 となり +32,767 を大きく超えてオーバフローするため誤り。
- ウ.x1×x20 は両者が同符号(正・正または負・負)であることを意味し、同符号の加算は絶対値が大きいとオーバフローしうるため、オーバフローしない保証にはならない。
- エ.正しい。符号が異なれば和の絶対値は大きい方の絶対値以下に収まり、−32,768〜+32,767 の範囲を必ず満たすのでオーバフローは発生しない。
応用情報技術者試験 令和3年度秋期 午前 の過去問一覧へ戻る・問8