演算レジスタが16ビットのCPUで符号付き16ビット整数x1、x2を16ビット符号付き加算 (x1+x2) するときに、全ての x1、x2の組合せにおいて加算結果がオーバフローしないものはどれか。ここで、|x| は x の絶対値を表し、負数は2の補数で表すものとする。
ア |x1| + |x2| ≦ 32,768の場合
イ |x1|及び|x2|がともに 32,768未満の場合
ウ x1 × x2 > 0の場合
エ x1とx2の符号が異なる場合
エ
オーバーフローは、扱える数値範囲の最大値を超えてしまうことである。
16ビットでは、符号付きの整数は先頭の1ビットが0の時は正の数、1の時は負の数を表し、
1000 0000 0000 0000(2) = -32,768 から
0111 1111 1111 1111(2) = 215 − 1 = 32,767 までを表現できる。
ア x1 = 32,767、 x2 = 1 などの場合にオーバーフローする。
イ x1 = 32,767、 x2 = 1 などの場合にオーバーフローする。
ウ x1 = 32,767、 x2 = 1 などの場合にオーバーフローする。
エ 正しい。符号が異なる16ビット整数同士の加算ではオーバーフローしない。
問3 | 目次 | 問5 |