1

たとえば、次の 2 つの 2 進数を取り除こうとしているとします: 1111 1000 0100 - 010 111 001 000

2 番目の 2 進数を同等の 2 の補数に変換し、それを単純に加算しましたが、結果として 1 のオーバーフローが発生したことに気付きました。オーバーフローを単に無視しますか? または、従わなければならないルールはありますか 1111 1000 0100 + 1010 0011 1000 = (1) 1001 1011 1100

4

2 に答える 2

0

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
于 2015-06-21T22:43:27.563 に答える