2進数の除算

著者: Roger Morrison
作成日: 6 9月 2021
更新日: 1 J 2024
Anonim
2進法の計算方法(加減乗除):数A
ビデオ: 2進法の計算方法(加減乗除):数A

コンテンツ

2進数の除算は、長除算を使用することで解決できます。これは、手順を自分で学んだり、簡単なコンピュータープログラムを作成したりするための便利な方法です。あるいは、繰り返し減算の補完法は、プログラミングでは実際には一般的に使用されていませんが、慣れていない可能性のあるアプローチを提供します。機械語は通常、効率を高めるために推定アルゴリズムを使用しますが、ここでは説明しません。

ステップに

方法1/2:筆算を使用する

  1. もう一度10進数の筆算を実行します。 通常の10進数(基数10)で長除算を行ってからしばらく経っている場合は、問題172÷4について基数を再度確認します。それ以外の場合は、これをスキップして次の手順に進み、2進数のこの手順を学習します。数字。
    • それ 配当 で割る 除数、そして答えはそれです .
    • 除数を被除数の最初の桁と比較します。除数が最大の数である場合は、除数が最小の数になるまで被除数に桁を追加し続けます。 (たとえば、172÷4を計算する場合、4と1を比較し、4> 1であることがわかり、4と17を比較します。)
    • 比較に使用した配当の最後の桁の上に商の最初の桁を書きます。 4と17を比較すると、4が17に4回入ることがわかります。したがって、商の最初の桁として4を7より上に書き込みます。
    • 乗算と減算を行って余りを求めます。商に除数を掛けます。この場合は4x 4 = 16です。17の下に16と書き、余り1に対して17-16を実行します。
    • 繰り返す。ここでも、除数4を次の桁1と比較し、4> 1であることに注意して、被除数の次の桁を「下げ」、代わりに4と12を比較します。 4は12に3回入り、余りがないので、商の次の桁として3を書くことができます。答えは43です。
  2. バイナリ筆算セットアップを作成します。 例として10101÷11を使用するとします。これを筆算として記述し、10101を被除数、11を除数とします。商を書くために上にスペースを残し、下に計算を書いてください。
  3. 除数を被除数の最初の桁と比較します。 これは10進数の筆算と同じように機能しますが、実際には2進数形式の方がはるかに簡単です。または、数値を除数(0)で除算できないか、除数が1回(1)に収まります。
    • 11> 1なので、11は「適合しません」1.商の最初の桁(被除数の最初の桁の上)として0を書き込みます。
  4. 次の桁を取り、1になるまで繰り返します。 この例の次のいくつかの手順は次のとおりです。
    • 配当の次の桁を下げます。 11> 10。商に0を書き込みます。
    • 次の桁を下げます。 11101.商に1を書きます。
  5. 残りを決定します。 10進数の筆算の場合と同様に、見つけた桁(1)に除数(11)を掛け、計算した桁の行に配当の下に結果を書き込みます。バイナリ形式では、1 x除数が常に除数に等しいため、これをより速く行うことができます。
    • 被除数の下に除数を書きます。ここでは、これを配当の最初の3桁(101)の下に11と記述します。
    • 残りの101〜11を計算します。10。覚えていない場合は、2進数を減算する方法を確認します。
  6. 問題が解決するまで続けます。 次の桁を除数から下の残りの桁に移動して、100を取得します。 11 100なので、商の次の桁として1を書き込みます。前と同じように問題を解決し続けます。
    • 100の下に11を書き込み、これらの数値を減算して1を取得します。
    • 配当の最後の桁を下げると、答えは11になります。
    • 11 = 11なので、商(答え)の最後の桁として1を書きます。
    • 残りがないので、問題は完了です。答えは 00111、またはもっと簡単に言えば、111。
  7. 必要に応じて基数ポイントを追加します。 結果が整数でない場合があります。最後の桁を使用しても余りがある場合は、配当に「.0」と「。」を追加します。商に追加して、もう1つの数値を下げて先に進むことができます。希望の精度に達するまでこれを続けてから、答えを確定します。紙の上では、0を省略するか、最後の桁が1の場合はそれを削除して、最後の桁に1を追加することで四捨五入できます。プログラミング時には、標準の丸めアルゴリズムの1つを使用して、2進数と10進数の間で変換するときのエラーを回避します。
    • 2進数を除算すると、多くの場合、小数点以下の桁数が繰り返され、小数点以下の桁数よりも多くなります。
    • これは、10進法内でのみ「小数点」に遭遇するため、任意の記数法で遭遇するより一般的な用語「基数点」によって参照されます。

方法2/2:補完法を使用する

  1. 基本的な考え方を理解します。 除算を解決する1つの方法は、任意の基数について、被除数から除数を減算し、次に剰余を減算し続け、負の数になる前にこれを実行し続けることができる回数を数えることです。これが基数10の例です。問題26÷7:
    • 26-7 = 19(1回減算)
    • 19-7 = 12(2回減算)
    • 12-7 = 5(3回減算)
    • 5-7 = -2。負の数なので、もう一度上げます。答えは3で、余りは5です。この方法では小数点以下の桁数は考慮されないことに注意してください。
  2. 補数を使用して減算することを学びます。 上記の方法を2進数に簡単に適用できますが、2進数の除算をプログラミングする時間を節約できる、より効率的な方法を使用することもできます。これはバイナリ補完法と呼ばれます。これがベースで、111-011を計算します(両方の数値が同じ長さであることを確認してください)。
    • 1から各桁を引いて、第2項の補数を見つけます。1から0ごと、および0から1ごとに設定することで、2進数でこれを簡単に行うことができます。この例では、011は100になります。
    • 結果に1を加算します:100 + 1 = 101。これは2の補数と呼ばれます。ここで、減算を加算と見なします。本質は、手順を完了した後、正の数を減算するのではなく、負の数を加算するかのように問題を処理することです。
    • 結果を最初の項に追加します。加算を解きます:111 + 101 = 1100。
    • 最初の桁(キャリー桁)を省略します。最終結果を得るには、回答から最初の桁を削除してください。 1100→ 100.
  3. 上記の2つの概念を組み合わせます。 これで、除算の合計を解くための減算法と、減算の合計を解くための2の補数法がどのように機能するかがわかりました。以下の手順を使用して、2つを組み合わせて除算の合計を解く1つの方法を作成できます。必要に応じて、続行する前に自分で理解してみることができます。
  4. 2の補数を加算して、被除数から除数を引きます。 問題を実行してみましょう:100011÷000101。最初のステップは、2の補数法を使用して100011 --000101を解くことです。これにより、次のようになります。
    • 000101の2の補数= 111010 + 1 = 111011
    • 100011 + 111011 = 1011110
    • 最初の桁を省略(キャリー)→011110
  5. 商に1を加えます。 コンピュータプログラムでは、これは商を1増やすポイントです。紙の上で、残りの作業を台無しにしないコーナーのどこかにメモを取ります。減算は1回成功したので、これまでの商は1です。
  6. 余りから除数を引くことによってこれを繰り返します。 最後の計算の結果は、除数が1回「入った」後に残っている余りです。除数の2の補数を加算し、キャリーを減算し続けます。毎回商に1を加算し、小さい除数に等しい余りが得られるまで続けます。
    • 011110 + 111011 = 1011001→011001(商1 + 1 = 10)
    • 011001 + 111011 = 1010100→010100(商10 + 1 = 11)
    • 010100 + 111011 = 1001111 → 001111 (11+1=100)
    • 001111 + 111011 = 1001010 → 001010 (100+1=101)
    • 001010 + 111011 = 10000101 → 0000101 (101+1=110)
    • 0000101 + 111011 = 1000000 → 000000 (110+1=111)
    • 0は101未満なので、停止できます。商 111 部分的な問題への答えです。余りは減算の最終結果であり、この場合は0(余りなし)です。

チップ

  • マシン命令のセットにバイナリ計算を適用する前に、増加、減少、またはスタック命令を検討する必要があります。
  • 数値が異なる桁数で構成されている場合、2の補数の減算方法は機能しません。これを解決するには、小さい方の数値にゼロを追加します。
  • 答えが正か負かを判断しようとする場合を除いて、計算を行う前に符号付き2進数の符号付き桁を無視します。