情報処理安全確保支援士試験 情報処理安全確保支援士試験 令和3年度秋期 午前Ⅰ4: 演算レジスタが16ビットのCPUで符号付き16ビット整数x1,x2を16ビット符号付き加算(x1+x2)するときに,全てのx1,x2の組合せにおいて加算結果がオ

情報処理安全確保支援士試験 令和3年度秋期 午前Ⅰ
Q 44 / 30
演算レジスタが16ビットのCPUで符号付き16ビット整数x1,x2を16ビット符号付き加算(x1+x2)するときに,全てのx1,x2の組合せにおいて加算結果がオーバフローしないものはどれか。ここで,|x|はxの絶対値を表し,負数はで表すものとする。

問題本文

演算レジスタが16ビットのCPUで符号付き16ビット整数x1,x2を16ビット符号付き加算(x1+x2)するときに,全てのx1,x2の組合せにおいて加算結果がオーバフローしないものはどれか。ここで,はxの絶対値を表し,負数は2の補数で表すものとする。

選択肢

  • .≦32,768の場合
  • .がともに32,767未満の場合
  • .x1×x2>0の場合
  • .x1とx2の符号が異なる場合

正解

. x1とx2の符号が異なる場合

解説

16ビット符号付き整数(2の補数)は-32768〜32767の範囲。同符号同士の加算は和が範囲外になりオーバフローしうるが、符号が異なる(一方が正、他方が負)場合は和の絶対値が必ず元の数より小さくなり、表現範囲を超えないため決してオーバフローしない。よって正解はエ。固定長演算の桁あふれは脆弱性の原因にもなる。

選択肢ごとの解説

  • .絶対値の和が32768以下でも、例えば両方正で和が32768になると上限32767を超え誤り。
  • .両方32767未満でも、正同士なら和が32767を超えオーバフローしうるので不適切。
  • .積が正は両者同符号を意味し、同符号の加算は範囲を超えうるためオーバフローし得る。
  • .符号が異なれば和の絶対値は必ず減り表現範囲内に収まるため、これが正解。

情報処理安全確保支援士試験 令和3年度秋期 午前Ⅰ過去問一覧へ戻る・問4