私が持っている場合
0010 1101
0110 1111
____ +
1001 1100
オーバーフローですか?最初の桁の符号が 1 になり、1 は負を表すからですか? 私はバイナリがとても苦手です。
追加するとどうなるか
1111 1111
1111 1111
___ +
1111 1110
オーバーフローではないキャリーアウト1で?1111 1110 は -2 を表すからですか?
助けてくれてありがとう!
符号なしの単純なバイナリ表現を使用している場合、それはオーバーフローではありません
0010 1101->45
0110 1111->111
45+111 = 156. [0, 255] の範囲で操作できる場合、オーバーフローではありません。
2 の補数を使用している場合、範囲は -128 から 127 で、0 の表現は 1 つしかありません。156 は [-128, 127] の範囲外であるため、オーバーフローです。
0 と -0 を表す 10000000 と 00000000 があるため、最初のビットだけを使用して符号を表すことはできません。負の数を操作するには、2 の補数を使用する必要があります。
それは、値をどのように扱うかによって異なります-署名されているか署名されていないか。符号なしバイナリの場合、オーバーフローではありません。署名されている場合は、オーバーフローが発生しました。
基本的に、オーバーフローは、結果が最大最小範囲を超えるバイナリ算術演算のために値が符号を変更する場合よりも、符号付きの値について話していると思います。