負数を2の補数で表現する32ビットの二つの整数データを加算したとき、あふれが生じるの必要十分条件はどれか。
ア | ともに正で和が231以上、又はともに負で絶対値の和が231以上 |
イ | ともに正で和が231以上、又はともに負で絶対値の和が231より大きい |
ウ | ともに正で和が231より大きい、又はともに負で絶対値の和が231以上 |
エ | ともに正で和が231より大きい、又はともに負で絶対値の和が231より大きい |
答え イ
【解説】
2の補数では最上位ビットは符号で0が正、1が負なので正の数の最大値は
0111 1111 1111 1111 1111 1111 1111 1111
になります。
これは、232-1です。
次に負の数で絶対値が最も大きいのは
1000 0000 0000 0000 0000 0000 0000 0000
になります。
これの、絶対値を2進数で表すには各けたの0・1を反転して、1を加えるので、0・1を反転させると
0111 1111 1111 1111 1111 1111 1111 1111
になり、これに1を加えると
1000 0000 0000 0000 0000 0000 0000 0000
になります。これは、232です。
したがって、正の数の場合は加算した結果が232-1を超えた場合、負の場合は加算した結果が232を超えた場合、けたあふれが発生します。
【キーワード】
・2の補数