1

2 進数表現 1010 1101 の数値から 1 を引きたいと思います。1 の 2 の補数 1111 1111 を書き、最初の数値と合計します。

キャリーを使用したビット単位の加算は、1 1010 1100 を返します。キャリーのために、1 ビット多くなります。これはバイナリ加算でどのように処理されますか?

また、加算を行うために 2 の補数を使用するのは正しいですか?

ありがとう。

4

1 に答える 1

2

これは減算を行うための完全に有効で一般的な方法ですが、'carry' フラグは通常の加算と同じ意味ではありません。を減算する代わりにn、大きな数を加算しているため、キャリー フラグを別の方法で処理する必要があります。その追加1は通常、ビットごとの加算でキャリーを意味しますが、ここではすべてが正しく機能したことを意味します。そこにキャリーがなかった場合、それは実際には結果が負になるはずだったことを意味します -a - bは に変換され、a + 2^n - bこれは 未満でした。2^nつまり、b > aなどa - b < 0です。どちらの方法でも、結果は結果の 8 ビット内に正しく表示されるので問題ありません。

于 2012-10-01T05:24:54.043 に答える