たとえば、次の 2 つの 2 進数を取り除こうとしているとします: 1111 1000 0100 - 010 111 001 000
2 番目の 2 進数を同等の 2 の補数に変換し、それを単純に加算しましたが、結果として 1 のオーバーフローが発生したことに気付きました。オーバーフローを単に無視しますか? または、従わなければならないルールはありますか 1111 1000 0100 + 1010 0011 1000 = (1) 1001 1011 1100
たとえば、次の 2 つの 2 進数を取り除こうとしているとします: 1111 1000 0100 - 010 111 001 000
2 番目の 2 進数を同等の 2 の補数に変換し、それを単純に加算しましたが、結果として 1 のオーバーフローが発生したことに気付きました。オーバーフローを単に無視しますか? または、従わなければならないルールはありますか 1111 1000 0100 + 1010 0011 1000 = (1) 1001 1011 1100
https://en.wikipedia.org/wiki/Two%27s_complement#Additionの加算に関するセクションの 2 の補数に関するウィキペディアの記事から、私の理解では、指定された (固定された) ビット長を超えて (左に) キャリーすることができます。桁上げの左端の 2 ビットが異なる場合、無視されますが、オーバーフローではありません。この記事では、キャリー行を維持してオーバーフローが発生したかどうかを確認する方法を示しています。同じスタイルの簡単な例を次に示します。
4 ビットの 2 の補数では、-2 は 1110 で、+3 は 0011 です。
11110 carry
1110 -2
+0011 +3
----
10001 which is 0001 or simply 1 ignoring the carry in bit 5 and is
safe since the leftmost two bits in the carry row are identical