工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

負の2進数

足し算が簡単にできるので、数字の1つを負にするだけで、同じ手法で減算の演算を実行できます。たとえば、7-5の減算問題は、加算問題7 +(-5)と本質的に同じです。

正の数を2進数で表す方法はすでにわかっているので、今知っておく必要があるのは、負の数を表す方法だけで、減算できるようになります。

通常、負の10進数は、上記の例のように、最上位桁のすぐ左にマイナス記号-5を付けて表します。ただし、2進表記を使用する目的は、電圧でビット値を表すことができるオン/オフ回路を構築することです(2つの代替値:「高」または「低」のいずれか)。

このコンテキストでは、これらの回路はオンまたはオフ(2つの可能な状態)しかできないため、「マイナス」記号などの3番目の記号の贅沢はありません。 1つの解決策は、数学的な符号を表すだけのビット(回路)を予約することです。


ご覧のとおり、標準の場所加重値以外の目的でビットを使用し始めるときは注意が必要です。それ以外の場合は、1101 2 実際には負の5を表すことを意味するのに、13という数と誤解される可能性があります。

ここで物事をまっすぐに保つには、最初に処理する最大数を表すために必要なビット数を決定し、次に算術演算でそのビットフィールド長を超えないようにする必要があります。

上記の例では、負の7(1111 2 )からの数値の表現に限定しています。 )から正の7(0111 2 )、そしてそれ以上、4番目のビットを「符号」ビットにすることによって。最初にこれらの制限を設定することによってのみ、負の数とより大きな正の数の混同を避けることができます。

負の5を1101 2 として表す は、負の2進数の符号-等級システムの例です。左端のビットを位置加重値ではなく符号インジケータとして使用することにより、実用的な利点をもたらすもの、つまり負の数の表現のために、「純粋な」形式の2進表記を犠牲にしています。

左端のビットは正または負の符号として読み取られ、残りのビットは標準の2進表記に従って解釈されます。左から右に、2の倍数で重みを配置します。

補完

符号の大きさのアプローチは単純ですが、算術的な目的にはあまり実用的ではありません。たとえば、負の5(1101 2 )を追加するにはどうすればよいですか。 )2進数の加算の標準的な手法を使用して、他の数値に変換しますか?

それが機能するためには、足し算を行う新しい方法を発明する必要があります。そうする場合は、長時間の引き算で仕事をする方がよいでしょう。符号の大きさの数え上げで行う必要がある場合、負の数を使用して加算による減算を実行することには算術的な利点はありません。それが私たちの目標でした!

負の数を表す別の方法があります。長年の足し算のよく知られたテクニックであり、補完と呼ばれる場所加重の数え上げの観点からもより理にかなっています。

この戦略では、符号と大きさのアプローチで行ったように、特別な目的を果たすために左端のビットを割り当て、以前と同じように数の制限を定義します。ただし、今回は、左端のビットは単なる符号ビットではありません。むしろ、それは負の場所の重みの値を持っています。たとえば、負の5の値は、次のように表されます。

  

右の3ビットは0から7までの大きさを表すことができ、左端のビットは0または負の8を表すことができるため、負の7(1001 2 )の任意の整数を正しく表すことができます。 =-8 10 + 1 2 =-7 10 )から正の7(0111 2 =0 10 + 7 10 =7 10 )。

このスキームで正の数を表す(4番目のビットを負の重みとして指定する)ことは、通常の2進表記の場合と同じです。ただし、負の数を表すことはそれほど簡単ではありません:

  

右の列の負の2進数は、右の3ビットの合計と左端のビットの負の8の合計であり、左の列の正の2進数と同じ進行で「カウント」されないことに注意してください。

むしろ、右の3ビットは、左端のビットの負の8桁の値と合計したときに、目的の(負の)合計と等しくなるように適切な値に設定する必要があります。

2の補数

これらの右の3ビットは、対応する正の数の2の補数と呼ばれます。次の比較を検討してください:

  

この場合、負の重みビットが4番目のビット(負の8の位の値)であるため、正の数の2の補数は、負の8に加算して、その正の値を負の等価にするために必要な値になります。

>

ありがたいことに、任意の2進数の2の補数を計算する簡単な方法があります。その数値のすべてのビットを反転し、すべての1を0に、またはその逆に変更して(いわゆる、1の補数に到達するため)、1を追加します。たとえば、5の2の補数(101 2 )を取得するには )、最初にすべてのビットを反転して010 2 を取得します (「1の補数」)次に、1を追加して011 2 を取得します。 、または-5 10 3ビット、2の補数形式

興味深いことに、2の補数の2の補数を生成することは、マグニチュードビットと同時に左端(符号)ビットを含むすべてのビットを操作する場合でも同じように機能します。前の例でこれを試してみましょう。正の5を負の5に変換しますが、4ビットすべてで補完プロセスを実行します。

元の数値である5(0101 2 )に0(正)符号ビットを含める必要があります。 )。まず、すべてのビットを反転して1の補数を取得します:1010 2 。次に、1つ追加すると、最終的な答えが得られます:1011 2 、または-5 10 4ビット、2の補数形式で表されます。

2の補数変換を実行する前に、負の重みビットの位置をすでに決定している必要があることを覚えておくことが非常に重要です。 2進数のフィールドが、8番目のビットが負の重みのビット(10000000 2 )として指定されている場合 )、他の7つのビットすべてに基づいて2の補数を決定する必要があります。

ここでは、2の補数の5(0000101 2 )は1111011 2 になります 。このシステムの正の5は、00000101 2 として表されます。 、および11111011 2 としての負の5 。

関連するワークシート:


産業技術

  1. 3ビットバイナリカウンタ
  2. 数字と記号
  3. 8進数と16進数の数値
  4. 数値と数値
  5. バイナリ減算
  6. 負帰還
  7. Java アルゴリズム
  8. C++ の数値
  9. MATLAB-数値
  10. Python-数字
  11. Go on PLCnext を使ってみる