「コーディング - コンピュータのハードウェアとソフトウェアの背後に隠された言語」の改良 - 第 13 章から第 14 章 (バイナリ減算器 - 1 ビット メモリ)

「成功は最終的なものではなく、失敗は致命的ではなく、勇気が重要です。」 - ウィンストン・チャーチル

減算を達成する方法

コンピューターによる引き算の論理

通常の減算および垂直演算では、借用が必要になることがよくあります。借用は非常に面倒なメカニズムです。借用を回避して同じ効果を生み出すには、いくつかのトリックを使用する必要があります。

借用代替メカニズム

10 進数で AB を計算すると、次のように借用を回避できます。

(999-B)+A+1-1000

紹介する例を挙げましょう:

  1. 111-108 を計算するには、まず 999-108=891 を使用します
  2. 891+111=1002
  3. 1002+1=1003
  4. 1003-1000=3

ご覧のとおり、結果は正しく、借用メカニズムは使用されていません。
被減数が減数よりも小さい場合、小さな変更を加えます。

  1. 108-111 を計算するには、まず 999-111=888 を使用します
  2. 888+108=996

この時点で、996+1-1000 は負の数であることがわかります。これはとにかく負であるため、この時点でこの数を 999 か​​ら直接減算し、反対の数をとります。

-(999-996)=-3

バイナリでの代替メカニズム

バイナリでは、999 をすべて 1 の最大数に置き換える必要があります。次に例を示します。

  • 11011001-10001111 を計算する場合、999 は 11111111 に置き換えられ、1000 は 100000000 に置き換えられます。

バイナリ垂直操作の例を示します。

  1. 11111101-10110000 を計算する
    ここに画像の説明を挿入
  2. 最初に 11111111-subtrahend を計算します。結果が subtrahend を否定することを理解することは難しくありません。
    ここに画像の説明を挿入
  3. ステップ 2 の結果に被減数を追加します
    ここに画像の説明を挿入
  4. 3番目のステップの結果+1
    ここに画像の説明を挿入
  5. 100000000を引く
    ここに画像の説明を挿入

減算の回路実装

私たちの目標は、加算器に基づいて加算と減算の両方を実装することです。加算または減算を決定するためにスイッチが使用されます。

  • 減算するときは、2 番目の入力を補う、つまり各ビットを反転する必要がありますが、同時に加算時に 2 番目の入力が変わらないようにする必要があります。これは、排他的論理和ゲート (XOR) で行います。回路図は次のとおりです。
    ここに画像の説明を挿入
    XOR の出力テーブルを思い出してください。
    写真の説明を追加してください
    否定記号が 1 の場合、補数コードの役割を果たすことができます。上の図の全体の構造は記号で表されています。
    ここに画像の説明を挿入
    この問題を解決した後、全体を見ることができます
    ここに画像の説明を挿入
    。減算操作、信号は 1 です。
  1. 右端の SUB 信号は +1 操作を実行するためのもので、加数として結果に直接追加されます。
  2. 左下隅の SUB 操作は減算操作を保証し、CO が 0 の場合、アンダーフローおよびアンダーフロー インジケーターがオンになります。
    被減数が減数よりも大きい場合、-1000 の演算が実行されないため、CO は 1 でなければならないという事実を考慮してください。したがって、CO が 1 であるということは、減算演算の結果が正の数であることを意味します。CO が 0 の場合、結果は負になり、アンダーフローが発生し、ライトが点灯します。

このデバイスの最終的な出力結果は負の数を表すことができないことに注意してください. アンダーフロー インジケータ ライトがオンの場合は、手動で結果に負の符号を追加するだけです.

フィードバックとトリガー

電気ベル

次の回路を検討してください。
ここに画像の説明を挿入

  1. 左のスイッチが閉じていないとき、回路に電流は流れません
  2. 左側のスイッチを切ると、電磁石が磁力を発生させ、上の鉄片を吸い込み、回路を切り離し、鉄片を跳ね返し、再び回路を接続し、再び鉄片を吸い込む、というサイクルを繰り返します。延々と。

この一連の回路により、上部の鉄片がすばやく上下に動きます。これがブザーまたは電気ベルの原理です。シンボルは写真に示されています。
ここに画像の説明を挿入
この回路は発振器と呼ばれ、発振器はその出力を等間隔で変化させるため、時計とも呼ばれます。
クロックの 1 周期にかかる時間を周期と呼び、周期の逆数を周波数と呼びます。

引き金

RSフリップフロップ

次の回路を見てください:
ここに画像の説明を挿入
この回路を分析する前に、NOR ゲートの出力を思い出してください:
ここに画像の説明を挿入
フォローしてください。この考え方は非常に重要です:

  1. 最初に上のスイッチを閉じると、左上隅の XOR ゲートの入力が 0、1 になり、出力が 0 になり、右側の XOR ゲートの入力が 0、0 になり、出力が 1 になり、光が点灯します。電球が点灯; 、左側が 1, 1 になり、出力は変化しません。
    ここに画像の説明を挿入
  2. 上のスイッチをオフにすると、左側のドアの出力は変化せず、電球はまだ光っています。
    ここに画像の説明を挿入
  3. 下のスイッチを閉じると、右側のNORゲートの出力が0になり、左側のゲートの入力が0、0になり、出力が1になります。下のスイッチを外すと元の状態に戻ります。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

要約:

  • 上のスイッチをオフにして、もう一度接続を外すと、電球が点灯し、そのままになります。
  • 下のスイッチをオフにして、再度切断すると、回路は初期状態に戻ります。

上のスイッチはセットに使用され、この回路の出力を 1 に設定しても変化しません; 下のスイッチはリセットに使用され、この回路を初期状態にします。
この回路は、ビットを「記憶」するために使用できます。または、これらの回路が多数ある場合は、情報を記録するために使用できます。特定の情報を「記憶する」回路は、フリップフロップと呼ばれます。
上図に示した回路は別の形で描くことができ、新しい出力¬Qが追加され(形がより類似している場合はこの記号で表されます)、上図の電球の出力が対応します図の Q へ: この回路は
写真の説明を追加してください
RS フリップフロップと呼ばれ、最も単純な種類のフリップフロップです。S 入力はセットに使用され、R 入力はリセットに使用されます。この回路の真理値表を次の図に示します。
ここに画像の説明を挿入
RS フリップフロップの簡略記号を次の図に示します。
ここに画像の説明を挿入

レベル トリガー D タイプ フリップフロップ

特定の時点を保持する信号が必要です。そのためには、この時点以降に入力が変化しても回路が変化しないようにする必要があります。
この回路の抽象論理を考える. 回路はデータ端子と保持ビットからなる. 保持位置が1のとき回路はデータ端子の入力を保存し, 0のとき回路出力は修理済み。これから, 回路の真理値表を書くことができます:
ここに画像の説明を挿入
次の図は、目的を達成できるRSに基づいて構築された回路です. ANDゲートを介して, 0に設定された保持ビットは、2つの入力が回路に到達するのを防ぐことができます. .
ここに画像の説明を挿入
次に、RS フリップフロップの真理値表を思い出してください。R入力とS入力のどちらか一方のみを1にすることができ、オール0を入力した場合はビットを保持することで保持できます。したがって、下の図の回路を考えることができます。
ここに画像の説明を挿入

この回路は、レベルトリガ D-Latch (1 ビットメモリ) と呼ばれます。フリップフロップは、ホールド ビットが特定のレベル (この図では 1) の場合にのみ情報を保持します。ホールド ビットは一般にクロックと呼ばれ、データを保持するタイミングを示します。
ここに画像の説明を挿入
写真の説明を追加してください
私はShuang_Aiです。アルゴリズムの道に熱心に取り組んでいる新人のShuang_Aiです。読んでくれてありがとう!良いと思ったら注意してください。今後、より包括的な知識の説明を提供していきます。

おすすめ

転載: blog.csdn.net/m0_72987309/article/details/130387977