基礎理論
符号付き8ビット整数(2の補数表現)の加算において、桁あふれ(オーバーフロー)が発生したと判定するための条件として正しいものはどれか。
ア.演算結果の最上位ビット(符号ビット)が1になったとき
イ.2つのオペランドの符号ビットが同じで、演算結果の符号ビットが異なるとき正解
ウ.演算結果に桁上がり(キャリー)が発生したとき
エ.2つのオペランドの符号ビットが異なるとき
解説
オーバーフローは「同じ符号どうしを足したのに符号が変わってしまった」瞬間に起きる。正+正=負になれば明らかにおかしい!
なぜ イ が正解か
2の補数加算でオーバーフローが起きる条件は「両オペランドの符号ビット(MSB)が同じ、かつ結果の符号ビットが異なる」場合。例: (+64)+(+65)=0100_0000+0100_0001=1000_0001=−127(符号が正→負に反転)→オーバーフロー。逆に異符号の加算ではオーバーフローは絶対に起きない。
出典: AI生成問題(学習用)