CPUと自然のオーバーフローキャリーを区別する方法?

CPUと自然のオーバーフローキャリーを区別する方法?

それは基本的な概念を学んだ触れるが、我々は最近接触した際に不明瞭があることを見つけたときに補完を学習する前に、それは検討されています

今日、問題の核心は、「CPUは自然にあきらめ高いとオーバーフローを区別する方法です?

最初の結論が与えられている:同じ時間キャリーの動作、最上位ビット値(即ち、第2の正の数の記号がある)と符号ビット(すなわち、最初の正の数である)、それは天然の破棄された場合。2 1の場合のみキャリーの間、オーバーフローです。

さんに説明してみましょう。すべての例の操作は、4つのカテゴリに分けることができます。

  1. 符号ビットをキャリー、キャリービットは最も高い値ではありません
  2. それは、最高値のビットのキャリーを符号ビットを運ぶことはありません
  3. 符号ビットとキャリー・ビットが最高値であり、
  4. そして、最上位ビットの符号ビットの値は、無運びます

第4のケースでは、何も言わないように、そして、その根本的な問題は区別未満関与運びません。

第一および第二のケースについて理解するのが容易である:最初の場合、値は入力しなかったので、最高レベルでは、次に符号の符号ビットが、必ずしもビットに完全に起因する、すなわち、符号ビットは2でなければなりませんで図1に示すように、その結​​果は、キャリー0-- 2つの負の符号ビットの加算結果が、コースのオーバーフロー正であるということです。第二は、その後数は、2つの正の結果の和が負、オーバーフローが間違いなくされ、2つの元の符号ビットが0であることを示し、同様の理由から、最高値と入力しなかった符号ビットを運ぶことです。

もう少し複雑なケース3は次のように分けることができ、次のとおりです。

  1. 2ビットシンボルの数であります
  2. 符号ビットが1であり、他方が0であります

ここで明確にコンテンツを話す、我々はオーバーフローが何を見ていますか?我々の4ビットのバイナリ数は、例えば、それは[-8,7]の範囲を示しています。オーバーフローエラーの結果ではなく、2進加算器自体が間違っている、我々はオーバーフローを呼び出すことに注意し、2進加算傍受、結果と一致していない撮影した演算の結果を意味するが、オーバーフローの原因を算出します結果を表すことができる範囲を超えています。ケース2の場合、正と負の数は右の正しい表現の和を表し、結果は、キャリー・ビットのみ自然にすることができる表される範囲を超えてはなりません。1の場合は、2つの負の数値を追加するとどのような状況の下で、それオーバーフローのだろうか?、符号ビットに加えて、ケースの範囲を超えて、負の数値の場合は0より小さいの大部分のビット値を表現します。前提1において、最小の負の数は1010および1110で見つける-6 -2それぞれ、正確-8-範囲になりません。したがって、この場合も、ないオーバーフローを証明されています。

要約すると、我々は、符号ビットと値は、限り我々はCPU命令を設計することができますように続いているとき、キャリー・オーバーフローの1ビットだけがあるだけでトップ2を示しました。

おすすめ

転載: www.cnblogs.com/jiading/p/11546524.html