3 | 2 | 1 | 0 | −1 | −2 | −3 | −4 |
---|---|---|---|---|---|---|---|
011 | 010 | 001 | 000 | 111 | 110 | 101 | 100 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
111 | 110 | 101 | 100 | 011 | 010 | 001 | 000 |
算術演算 内容 |
オーバー フロー の発生 |
内容 |
---|---|---|
正数+正数 | 数値により 発生する |
演算結果は、正の方に増加する。 この演算結果が「表現できる範囲外」になればオーバーフローが発生する。 ●3ビットの数値表現で見てみます ・2+1=3を見ます、2進数表現は010b+001b=011bです。 結果の3(011b)は、「表現できる範囲内」なので、オーバーフローは 発生しません。 ・2+2=4の2進数表現は010b+010b=100bです。 結果の100bは、10進表示では−4なので間違っています。 「表現できる範囲外」なので、オーバーフローが発生します。 |
正数−正数 | 発生しない | 整理すれば、正数と負数の加算になる。 演算結果の絶対値は小さくなるのでオーバーフローは発生しません。 |
負数−負数 | ||
負数+負数 | 数値により 発生する |
演算結果は、負の方に増加する。 この演算結果が「表現できる範囲外」になればオーバーフローが発生する ●3ビットの数値表現で見てみます ・−2−1=−3を見ます、2進数表現は110b+001b=101bです。 結果の−3(101b)は、「表現できる範囲内」なので、オーバーフローは 発生しません。 ・−3−3=−6の2進数表現では101b−011b=010bです。 結果の010bは、10進表示では2なので間違っています。 「表現できる範囲外」なので、オーバーフローが発生します。 |
論理演算 内容 |
オーバー フロー の発生 |
内容 |
---|---|---|
正数+正数 | 数値により 発生する |
演算結果は、正の方に増加する。 この演算結果が「表現できる範囲外」になればオーバーフローが発生する。 ●3ビットの数値表現で見てみます ・2+5=7を見ます、2進数表現は010b+101b=111bです。 結果の7(111b)は、「表現できる範囲内」なので、オーバーフローは 発生しません。 ・2+6=8の2進数表現は010b+110b=000bです。 結果の000bは、10進表示では0で間違っています。 「表現できる範囲外」なので、オーバーフローが発生します。 |
正数−正数 | 数値により 発生する |
被減数<減数の場合、演算結果は負数になります。 論理演算では負数は「表現できる範囲外」なのでオーバーフローします。 ●3ビットの数値表現で見てみます ・7−7=0を見ます、2進数表現は111b−111b=000bです。 結果の0(000b)は、「表現できる範囲内」なので、オーバーフローは 発生しません。 ・6−7=−1の2進数表現は110b−111b=111bです。 結果の111bは、10進表示では7で間違っています。 「表現できる範囲外」なので、オーバーフローが発生します。 |