アプリ版:「スタンプのみでお礼する」機能のリリースについて

100-(-100)の場合です
0110 0100
+ 0110 0100
-------------
1100 1000
unsigned intのaddの場合の結果は (128+64+8) = 200何ですが
signed intの計算の場合結果は -(64+8) = -72です
assemblerでは下の計算の場合OFが1になります
overflow flagだと思いますが
この時overflowって何ですか?

A 回答 (2件)

普通の英語.


「表現できる範囲を越えちゃったよ」って意味.
    • good
    • 0

質問文のような8bit長の数値形式を想定した場合。



符号なし整数(unsigned int)形式なら計算結果は8bit長の中に収まりますが,

0110 0100
0110 0100 +
-------------
1100 1000

符号つき整数(signed int)形式の場合は先頭1bitが符号(正なら0,負なら1)としての意味を持ちます。質問文の計算結果は7bit長の中には収まりません。

[0] 110 0100
[0] 110 0100 +
-------------
[1] 100 1000

↑7bit長に収まらず,計算結果が負として求められてしまった異常

だから overflow です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!