0

私はバイナリの足し算を練習していて、オーバーフローしたと思います。時間を節約するために、01010 と 11011 の足し算には 5 ビットの答えが必要です。10 進数の 10 と 27 です。

追加すると、予想される答えの 37 である 100101 が得られます。

ただし、答えは 5 ビットでなければならないので、左側の 1 のビットを削除するということですか? 答えが5にならないので、私はこれについて混乱していますか?37じゃないの?00101になるので、それともコンピューターがこれを行う方法ですか?

また、以下の 2 つの質問の意味を明らかにできる人はいますか?

最上位ビットへのキャリーインの値は?

最上位ビットのキャリーアウトの値は?

ヘルプと説明をいただければ幸いです。

シム

4

1 に答える 1

1

5 ビットしかない場合、はい、2 進数で 10+27 の答えは 5 です。これは、5 ビットに格納できる最大値が 2^5 - 1 = 31d = 11111b であるためです。0 を含めて、32 個の異なる値を 5 ビット変数に格納できます。したがって、結果は 37mod32 = 5 です。

最上位ビットは最高値のビットで、この場合は左端のビットです。このビットが 1 の場合、10 進値は 16 です。

「キャリービット」は、変数自体ではなく、MSB の隣にあるビットです。つまり、5 ビット変数の「6 番目のビット」と言えます。初期値は 0 です。

0 01010
0 11011 +
---------
1 00101 =

しかし、結果の値は 1 です。したがって、1 を「実行」します。これは、コンピュータで使用できます。つまり、このようなオーバーフローを検出できます。

詳細が必要な場合はお知らせください。

于 2013-03-06T10:16:42.983 に答える