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